国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
WCF與AJAX編程開發(fā)實踐(1):AJAX基礎(chǔ)概念和純AJAX示例
    在《WCF分布式安全開發(fā)實踐》系列文章之后,很想重新開啟一個系列文章,來完善WCF的學習知識。思考很久,決定寫一下WCF和AJAX學習的文章,取名為《WCF與AJAX編程開發(fā)實踐》。
   這個系列主要關(guān)注在WCF于AJAX集成的開發(fā)學習上??紤]到很多沒有AJAX的朋友,可能要接觸WCF。這里會從頭開始。最初的AJAX概念和原理,然后會講解微軟的ASP.NET AJAX,中間是支持AJAX的Web Service,因為在WCF之前,Web Service已經(jīng)支持AJAX集成交互了,這里作為過渡知識,會單獨給出一篇介紹。最后正式進入WCF和AJAX的學習階段,進而分析一些與AJAX相關(guān)的重要的WCF的特性。
      這個系列的文章大概會涉及一下幾個主題:
1.簡單的AJAX示例;
2.支持ASP.NET Ajax的Web Service;
3.支持ASP.NET Ajax的WCF服務;
4.支持非ASP.NET AJAX的WCF服務;
5.支持JSON的Ajax WCF服務;
6.支持XML的Ajax WCF服務 。
    這些是計劃初步完成的文章。有一定AJAX基礎(chǔ)的學習者,可以直接從文章3以后看,前面3篇文章是作為0基礎(chǔ)AJAX學習準備的。這個計劃也是希望能使得學習者有個階梯進步的過程。網(wǎng)上關(guān)于AJAX的文章也很多,大家也可以自己學習。這里我堅持的原則還是從Ajax最初的歷史講起。免得給大家導致不必要的誤會。技術(shù)高手可以作為趣聞來重新回顧一下AJAX。
    文章還是從最基本的概念講起,AJAX的起源和興起。一些與AJAX相關(guān)的重要Web技術(shù)標準.然后會提到AJAX的核心對象XMLHttpRequest。最后會是簡單AJAX的分析。
【1】什么是AJAX:
    AJAX全稱是Asynchronous JavaScript and XML,也就是異步JavaScript和XML。
    來自W3schools的定義:
    1.AJAX = Asynchronous JavaScript and XML.
    2.AJAX is based on JavaScript and HTTP requests.()。
    3.AJAX is a type of programming made popular in 2005 by Google (with Google Suggest).
    4.AJAX is not a new programming language, but a new way to use existing standards.
    翻譯為中文以后就是:
    1.AJAX等價于Asynchronous JavaScript and XML.
    2.AJAX基于JavaScript和HTTP請求 
    3.AJAX是一種由Google 提示而流行起來的編程方式,
    4.AJAX 不是一種新的編程語言,而是一種使用現(xiàn)有標準的新方法。
【1.1】歷史回顧:AJAX在1998年前后得到了應用。允許客戶端腳本通過XMLHTTP對象發(fā)送HTTP請求給服務端。第一個XMLHTTP組件由Outlook Web Access小組完成。該組件原屬于微軟Exchange Server服務器產(chǎn)品,并且迅速地成為了Internet Explorer 4.0的一部分。所以很多人認為第一個比較成熟應用了Ajax技術(shù)的成功的商業(yè)應用程序久是:Outlook Web Access。它使得Outlook Web Access成為包括Oddpost的網(wǎng)絡郵件產(chǎn)品在內(nèi)的許多產(chǎn)品的領(lǐng)頭羊。但是AJAX的推廣不得不提到另外一個公司:GOOGLE。2005年初,正是由于Google的大規(guī)模應用,才使得Ajax被大眾所了解。Google在它著名的交互應用程序中使用了異步通訊,如Google討論組、Google地圖、Google搜索建議、Gmail等。只要使用到Google產(chǎn)品的人都知道,最簡單的就是搜索提示,當用戶輸入一個字符的時候,會自動提示匹配的結(jié)果數(shù)目。大家可以到這里測試一下:http://www.google.com/。
    Ajax這個詞由Jesse James Gaiiett2005年在《Ajax: A New Approach to Web Applications》一文所創(chuàng)。從此AJAX為業(yè)界接受。另外,Mozilla Firefox、Opera 以及 Safari 瀏覽器的支持,也使得AJAX的得推廣更加容易,使得該技術(shù)走向成熟。
【1.2】基本原理與優(yōu)點:
     AJAX技術(shù)的本質(zhì)原理就是:使用 JavaScript 的 XMLHttpRequest 對象來直接與服務器進行通信。通過這個對象,JavaScript 可在不重載頁面的情況與 Web 服務器交換數(shù)據(jù)。然后通過DOM更新部分頁面原屬。
     Ajax最大的優(yōu)點在于它帶來的更好的用戶體驗。傳統(tǒng)的web頁面請求不同,AJAX技術(shù)當提交表單時就向web服務器發(fā)送一個請求。服務器接收并處理傳來的表單,然後返回一個新的網(wǎng)頁。這個做法浪費了許多帶寬,因為在前後兩個頁面中的大部分HTML代碼往往是相同的。AJAX 在瀏覽器與 Web 服務器之間使用異步數(shù)據(jù)傳輸(HTTP 請求),這樣就可使網(wǎng)頁從服務器請求少量的信息,而不是整個頁面。
     AJAX 可使因特網(wǎng)應用程序更小、更快,更友好。
【2】相關(guān)的重要Web技術(shù):
   AJAX基于JavaScript和HTTP請求,那一定會使用到一些現(xiàn)有的技術(shù),或者標準。簡單來說就是:
(1)JavaScript,腳本語言,操作DOM頁面對象,使用XMLHttpRequest 對象來直接與服務器進行通信。 
(2)XML :跨平臺數(shù)據(jù)傳遞的標準。
(3)HTML :超文本標記語言。
(4)CSS :級聯(lián)樣式表,CSS提供了從內(nèi)容中分離應用樣式和設計的機制。
  在 AJAX 中使用的 Web 標準已被良好定義,并被所有的主流瀏覽器IE5+,Mozilla Firefox、Opera 以及 Safari 支持。AJAX 應用程序獨立于瀏覽器和平臺。
所以說AJAX不是一個新技術(shù),而是現(xiàn)有技術(shù)和標準的結(jié)合。
【3】瀏覽器兼容性:
     關(guān)于AJAX的應用,要考慮的一個重要問題就是瀏覽器的兼容性,因為各個廠商在定義諸如AJAX和CSS樣式特性的時候,標準不統(tǒng)一,應用過程中會出現(xiàn)瀏覽器兼容的問題。例如對于XMLHttpRequest。構(gòu)建一個運行在不同瀏覽器就需要特別注意。
    這個問題解決的辦法之一就是在使用這些對象的時候,判斷瀏覽器,進而區(qū)別對待。另外一個推薦的方式就是使用現(xiàn)有的AJAX框架,它們符合跨瀏覽器AJAX開發(fā)的客戶端JavaScript庫。一些流行的框架包括:AJAX.Net, Backbase, Bitkraft, Django, DOJO, DWR, MochiKit, Prototype, Rico, Sajax, Sarissa, and Script.aculo.us.可以直接使用。XMLHttpRequest 對象得到下列瀏覽器的支持:Internet Explorer 5.0+、Safari 1.2、Mozilla 1.0 / Firefox、Opera 8+ 以及 Netscape 7。
【4】XMLHttpRequest:
    前面我們提到,AJAX的核心在于XMLHttpRequest 對象。它是AJAX實現(xiàn)的基礎(chǔ)。AJAX通過使用 XMLHttpRequest 對象創(chuàng)建一種動態(tài)性極強的web 界面。Google 就是很好的例子。當你在Google 的搜索框中輸入查詢時,XMLHttpRequest 會向某個服務器發(fā)出這些字詞,然后服務器會返回一系列的搜索提示。
【4.1】對象創(chuàng)建:
    不同的瀏覽器創(chuàng)建 XMLHttpRequest 對象的方法是有差異的。IE 瀏覽器使用 ActiveXObject,而其他的瀏覽器使用名為 XMLHttpRequest 的 JavaScript 內(nèi)建對象。代碼如下:
<script type="text/javascript">
function ajaxCall()
 {
 var xmlHttp;
 
try
    {
   
// Safari 1.2、Mozilla 1.0 / Firefox、Opera 8+ 以及 Netscape 7等瀏覽器
    xmlHttp=new XMLHttpRequest();
    }
 
catch (e)
    {
  
// Internet Explorer 5.0+瀏覽器
   try
      {
      xmlHttp
=new ActiveXObject("Msxml2.XMLHTTP");
      }
   
catch (e)
      {
      
try
         {
         xmlHttp
=new ActiveXObject("Microsoft.XMLHTTP");
         }
      
catch (e)
         {
         alert(
"瀏覽器不支持AJAX!");
         
return false;
         }
      }
    }
 }
</script>
    這里代碼在實例化XMLHttpRequest 對象的時候做了異常處理,從而嘗試創(chuàng)建瀏覽器支持的實例。
【4.2】對象狀態(tài):
    在使用XMLHttpRequest對象時, 我們可以通過readyState屬性來判斷服務器響應狀態(tài)。返回值與狀態(tài)的關(guān)系如下:
狀態(tài) 描述
0 請求未初始化(在調(diào)用 open() 之前)
1 請求已提出(調(diào)用 send() 之前)
2 請求已發(fā)送(這里通常可以從響應得到內(nèi)容頭部)
3 請求處理中(響應中通常有部分數(shù)據(jù)可用,但是服務器還沒有完成響應)
4 請求已完成(可以訪問服務器響應并使用它)
    也就是說,我們在readyState==4的時候,來處理返回結(jié)果。這樣保證了XMLHttpRequest對象完成了與服務器的交互過程。
【4.3】處理返回數(shù)據(jù):
   在XMLHttpRequest對象返回數(shù)據(jù)以后,我們需要對數(shù)據(jù)進行處理。這些返回數(shù)據(jù)的可以是字符,也可以是XML文檔格式。
這里我們需要在在XMLHttpRequest對象的onreadystatechange屬性綁定我們要處理數(shù)據(jù)的Javascript函數(shù) .然后進行數(shù)據(jù)的處理。
我們可以通過 XMLHttpRequest對象的responseText 屬性來取回由服務器返回的數(shù)據(jù)。參考代碼如下:
xmlHttp.onreadystatechange=function()
  {
  
if(xmlHttp.readyState==4)
    {
        var data 
=xmlHttp.responseText;
        
//獲取返回數(shù)據(jù),添加處理代碼進行處理
    }
  }
  如果返回的是XML格式的數(shù)據(jù),我們也可以通過xmlHttp.responseXML.documentElement來處理;在定義了如何處理響應后,就要發(fā)送請求了.可以調(diào)用HTTP請求類的open()send()方法, 這里需要想請求的服務器發(fā)送數(shù)據(jù)和請求。參考代碼如下:
http_request.open('GET''http://www.google.com'true);
http_request.send(
null);
(1)open()的第一個參數(shù)是HTTP請求方式 – GET, POST, HEAD 或任何服務器所支持調(diào)用的方式. 有關(guān)HTTP請求方法的詳細信息可參考http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html W3C specs 
(2)第二個參數(shù)是請求的URL.
(3)第三個參數(shù)設置請求是否為異步模式.如果第一個參數(shù)是"POST",send()方法的參數(shù)可以是任何想送給服務器的數(shù)據(jù). 這時數(shù)據(jù)要以字符串的形式送給服務器:name=frank&address=shanghai。
   以上久是AJAX通信和數(shù)據(jù)處理相關(guān)的主要知識點。這些是AJAX技術(shù)的基礎(chǔ)步驟,無論你使用數(shù)目AJAX框架,基本的通信步驟和數(shù)據(jù)處理都是在此基礎(chǔ)上的封裝和擴展。
【5】示例代碼分析:
    這里我們給出的是一個AJAX讀取數(shù)據(jù),并且顯示到頁面的例子。不使用ASP.NET FrameWork等框架.只使用Javascript和HTML借助XMLHttpRequest來實現(xiàn)數(shù)據(jù)的讀取,純潔的原生態(tài)AJAX代碼。這里大家可以使用文本編輯器或者寫字板等工具來編寫代碼。當然也可以借助其他功能強大的IDE編輯器。
【5.1】頁面Javascript代碼:
     這里頁面上放置了3個HTML控件,2個文本和一個按鈕,點擊按鈕,讀取數(shù)據(jù),顯示到文本框。頁面比較簡單。整個過程發(fā)送一個簡單的HTTP請求。全部的代碼如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    
<title>純AJAX例子:讀取數(shù)據(jù)</title>
</head>
<body>
<script type="text/javascript">
function ajaxCall()
 {
 var xmlHttp;
 
try{// Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();//實例化XMLHttpRequest對象
    }
 
catch (e)
    {
  
// Internet Explorer 5+
   try{
      xmlHttp
=new ActiveXObject("Msxml2.XMLHTTP");
      }
   
catch (e)
      {
      
try
         {
         xmlHttp
=new ActiveXObject("Microsoft.XMLHTTP");
         }
      
catch (e)
         {
         alert(
"瀏覽器不支持AJAX!");
         
return false;
         }
      }
    }
    
//綁定數(shù)據(jù)處理函數(shù)。
    xmlHttp.onreadystatechange=function()
      {
      
if(xmlHttp.readyState==4)
        {
            
if (xmlHttp.status == 200)
            {
                document.getElementById(
'txtResult').innerHTML=document.getElementById('txtUsername').value + xmlHttp.responseText;
            } 
else 
            {
                alert(
'請求出錯.');
                    
// there was a problem with the request,
                    
// for example the response may be a 404 (Not Found)
                    
// or 500 (Internal Server Error) response codes
            }   
        }
      }
    xmlHttp.open(
"GET","data.txt",true);//異步請求數(shù)據(jù)
    xmlHttp.send(null);
 }
</script>
<form style="text-align:left">
姓名: 
<input type="text" name="txtUsername"  style="width:400px;" />
<br />
測試:
<input type="button" name="btn"   value="測試" onclick="ajaxCall();" style="width:400px;" />
<br />
結(jié)果: 
<textarea name="txtResult" style="width:400px;"></textarea>
</form>
</body>
</html>
【5.2】數(shù)據(jù)文件:
   數(shù)據(jù)文件使用文本文件,內(nèi)容是簡單的字符。包含字符“Hello,It is a pure AJAX test!”。這個會和輸入的用戶名顯示到一起。簡單的SayHello程序。就不貼出了。大家可以在例子代碼里下載這個代碼,然后自己定義或者修改。進行測試。
【5.3】測試結(jié)果:
   輸入姓名,然后發(fā)送http get請求,XMLHttpRequest對象異步讀取數(shù)據(jù),顯示在結(jié)果列表。這里借助Visual Studio來測試頁面,使用Visual Studio網(wǎng)站方式打開剛才編輯的文件的目錄文件夾。然后運行或者在瀏覽器中查看頁面,就可以進行測試了。直接查看測試會出錯,文件讀取權(quán)限錯誤。測試結(jié)果如圖:
【6】總結(jié):
    以上就是AJAX基礎(chǔ)概念和例子的全部內(nèi)容。這個文章適合AJAX入門的初學者。目前AJAX的應用已經(jīng)相當廣泛。幾乎所有的網(wǎng)站和基于Web的系統(tǒng)都能看到AJAX的影子,它已經(jīng)相當成熟。而且為廣大的開發(fā)者和用戶接受。
(1)AJAX不是一門新的技術(shù),它是多種已有技術(shù)的集成應用,帶來了更好的用戶體驗。
(2)AJAX最先由Microsoft創(chuàng)立,Google對AJAX的推廣起到很大作用。
(3)AJAX不是萬能的,在開發(fā)AJAX程序的過程里一定要注意瀏覽器的兼容性問題??梢钥紤]借助一些開源的AJAX框架。
(4)AJAX的初學者,很多人直接學習和使用ASP.NET AJAX框架,習慣拖拽控件,導致AJAX學習走了很都彎路。學ASP.NET AJAX等開發(fā)框架以前,最好能先閱讀一些AJAX基礎(chǔ)概念的書籍或者教程,這樣可以使你對AJAX的本質(zhì)有個清晰的認識。
    最后是本文的參考代碼:/Files/frank_xl/1.PureAJAXSampleFrankXuLei.rar。歡迎關(guān)注后續(xù)WCF AJAX文章。謝謝.
參考文章:
1.http://www.w3schools.com/Ajax/Default.Asp
2.https://developer.mozilla.org/cn/AJAX/%e5%bc%80%e5%a7%8b
3.http://baike.baidu.com/view/1641.htm
4.http://www.w3school.com.cn/ajax/ajax_intro.asp
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ajax
網(wǎng)友熱評“AJAX七宗罪”:欲加之罪何患無辭
用AJAX開發(fā)智能Web應用程序之基礎(chǔ)篇
Web 2.0中AJAX技術(shù)應用詳解
Start AJAX
BlogJava - eamoi之Coder日志
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服