精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

從零開始學習jQuery之Ajax快餐

開發 前端
本系列文章將帶您進入jQuery的精彩世界, 其中有很多作者具體的使用經驗和解決方案, 即使你會使用jQuery也能在閱讀中發現些許秘籍.

本篇文章講解如何使用jQuery方便快捷的實現Ajax功能.統一所有開發人員使用Ajax的方式.

Ajax讓用戶頁面豐富起來, 增強了用戶體驗. 使用Ajax是所有Web開發的必修課. 雖然Ajax技術并不復雜, 但是實現方式還是會因為每個開發人員的而有所差異.jQuery提供了一系列Ajax函數來幫助我們統一這種差異, 并且讓調用Ajax更加簡單.

51CTO推薦專題:jQuery從入門到精通 jQuery給力插件大閱兵

一. 原始Ajax與jQuery中的Ajax

首先通過實例, 來看一下jQuery實現Ajax有多簡單. 下面是一個使用原始Ajax的示例:

上面的實例中, data/AjaxGetCityInfo.aspx?resultType=html 地址會返回一段HTML代碼.

使用原始Ajax, 我們需要做較多的事情, 比如創建XmlHttpRequest對象, 判斷請求狀態, 編寫回調函數等.

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  3. <html xmlns="http://www.w3.org/1999/xhtml">  
  4. <head>  
  5.     <title>jQuery Ajax</title>  
  6.     <script type="text/javascript">  
  7.         $(function()  
  8.         {  
  9.             var xhr = new AjaxXmlHttpRequest();  
  10.             $("#btnAjaxOld").click(function(event)  
  11.             {  
  12.                 var xhr = new AjaxXmlHttpRequest();  
  13.                 xhr.onreadystatechange = function()  
  14.                 {  
  15.                     if (xhr.readyState == 4)  
  16.                     {  
  17.                         document.getElementById("divResult").innerHTML = xhr.responseText;  
  18.                     }  
  19.                 }  
  20.                 xhr.open("GET""data/AjaxGetCityInfo.aspx?resultType=html"true);  
  21.                 xhr.send(null);  
  22.             });  
  23.         })  
  24.  
  25.         //跨瀏覽器獲取XmlHttpRequest對象  
  26.         function AjaxXmlHttpRequest()  
  27.         {  
  28.             var xmlHttp;  
  29.             try 
  30.             {  
  31.                 // Firefox, Opera 8.0+, Safari  
  32.                 xmlHttp = new XMLHttpRequest();  
  33.             }  
  34.             catch (e)  
  35.             {  
  36.  
  37.                 // Internet Explorer  
  38.                 try 
  39.                 {  
  40.                     xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");  
  41.                 }  
  42.                 catch (e)  
  43.                 {  
  44.  
  45.                     try 
  46.                     {  
  47.                         xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");  
  48.                     }  
  49.                     catch (e)  
  50.                     {  
  51.                         alert("您的瀏覽器不支持AJAX!");  
  52.                         return false;  
  53.                     }  
  54.                 }  
  55.             }  
  56.             return xmlHttp;  
  57.         }          
  58.       
  59.     </script>  
  60.  
  61. </head>  
  62. <body>      
  63.     <button id="btnAjaxOld">原始Ajax調用</button><br />  
  64.     <br />  
  65.     <div id="divResult"></div>  
  66. </body>  
  67. </html> 

而用jQuery的Load方法, 只需要一句話:

  1. $("#divResult").load("data/AjaxGetCityInfo.aspx", { "resultType""html" }); 

曾經我是一個原始Ajax的絕對擁護者, 甚至摒棄微軟的Asp.net Ajax, 因為我想要***的代碼靈活度. 使用原始Ajax讓我感覺完成自己的工作更加輕松, 即使多寫了一些代碼. 但是當我去翻看別人的Ajax代碼并且嘗試修改的時候, 我改變了我的看法--我們的代碼到處分布著創建XmlHttpRequest方法的函數, 或者某些Ajax程序邏輯性和結構性很差, 很難看懂.

我們可以將通用方法放到一個js文件中, 然后告訴大家"嘿伙伴們, 都來用這個js中的方法". 但是在某些時候有些新來的外包人員并不知道有這個js文件的存在. 而且其實這個通用的js就是一個公共的腳本類庫, 我相信沒有人會覺得自己開發一個類庫會比jQuery更好!

所以我放棄了制造輪子的計劃, 大家都使用jQuery編寫Ajax相關的方法就可以解決各種差異性問題, 并且讓工作更有效率.

現在只是用jQuery的Ajax函數, 我的頁面變得簡潔了:

二. jQuery Ajax詳解

jQuery提供了幾個用于發送Ajax請求的函數. 其中最核心也是最復雜的是jQuery.ajax( options ),所有的其他Ajax函數都是它的一個簡化調用. 當我們想要完全控制Ajax時可以使用此結果, 否則還是使用簡化方法如get, post, load等更加方便. 所以jQuery.ajax( options ) 方法放到***一個介紹. 先來介紹最簡單的load方法:

1. load( url, [data], [callback] )

Returns: jQuery包裝集

說明:

load方法能夠載入遠程 HTML 文件代碼并插入至 DOM 中。

默認使用 GET 方式, 如果傳遞了data參數則使用Post方式.

- 傳遞附加參數時自動轉換為 POST 方式。jQuery 1.2 中,可以指定選擇符,來篩選載入的 HTML 文檔,DOM 中將僅插入篩選出的 HTML 代碼。語法形如 "url #some > selector", 默認的選擇器是"body>*".

講解:

load是最簡單的Ajax函數, 但是使用具有局限性:

1. 它主要用于直接返回HTML的Ajax接口

2. load是一個jQuery包裝集方法,需要在jQuery包裝集上調用,并且會將返回的HTML加載到對象中, 即使設置了回調函數也還是會加載.

不過不可否認load接口設計巧妙并且使用簡單.下面通過示例來演示Load接口的使用:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  3. <html xmlns="http://www.w3.org/1999/xhtml">  
  4. <head>  
  5.     <title>jQuery Ajax - Load</title>  
  6.  
  7.     <script type="text/javascript" src="../scripts/jquery-1.3.2-vsdoc2.js"></script>  
  8.  
  9.     <script type="text/javascript">  
  10.         $(function()  
  11.         {  
  12.             $("#btnAjaxGet").click(function(event)  
  13.             {  
  14.                 //發送Get請求  
  15.                 $("#divResult").load
  16. ("../data/AjaxGetMethod.aspx?param=btnAjaxGet_click" + "&timestamp=" + (new Date()).getTime());  
  17.             });  
  18.  
  19.             $("#btnAjaxPost").click(function(event)  
  20.             {  
  21.                 //發送Post請求  
  22.                 $("#divResult").load("../data/AjaxGetMethod.aspx", { "param""btnAjaxPost_click" });  
  23.             });  
  24.  
  25.             $("#btnAjaxCallBack").click(function(event)  
  26.             {  
  27.                 //發送Post請求, 返回后執行回調函數.  
  28.                 $("#divResult").load("../data/AjaxGetMethod.aspx", { "param""btnAjaxCallBack_click" }, function(responseText, textStatus, XMLHttpRequest)  
  29.                 {  
  30.                     responseText = " Add in the CallBack Function! <br/>" + responseText  
  31.                     $("#divResult").html(responseText); //或者: $(this).html(responseText);  
  32.                 });  
  33.             });  
  34.  
  35.             $("#btnAjaxFiltHtml").click(function(event)  
  36.             {  
  37.                 //發送Get請求, 從結果中過濾掉 "鞍山" 這一項  
  38.                 $("#divResult").load("../data/AjaxGetCityInfo.aspx?resultType=html" + "&timestamp=" + (new Date()).getTime() + " ul>li:not(:contains('鞍山'))");  
  39.             });  
  40.  
  41.         })  
  42.     </script>  
  43.  
  44. </head>  
  45. <body>      
  46.     <button id="btnAjaxGet">使用Load執行Get請求</button><br />  
  47.     <button id="btnAjaxPost">使用Load執行Post請求</button><br />  
  48.     <button id="btnAjaxCallBack">使用帶有回調函數的Load方法</button><br />  
  49.     <button id="btnAjaxFiltHtml">使用selector過濾返回的HTML內容</button>  
  50.     <br />  
  51.     <div id="divResult"></div>  
  52. </body>  
  53. </html> 

上面的示例演示了如何使用Load方法.

提示:我們要時刻注意瀏覽器緩存, 當使用GET方式時要添加時間戳參數 (net Date()).getTime() 來保證每次發送的URL不同, 可以避免瀏覽器緩存.

提示: 當在url參數后面添加了一個空格, 比如" "的時候, 會出現"無法識別符號"的錯誤, 請求還是能正常發送. 但是無法加載HTML到DOM. 刪除后問題解決.

2.jQuery.get( url, [data], [callback], [type] )

Returns: XMLHttpRequest

說明:

通過遠程 HTTP GET 請求載入信息。

這是一個簡單的 GET 請求功能以取代復雜 $.ajax 。請求成功時可調用回調函數。如果需要在出錯時執行函數,請使用 $.ajax。

講解:

此函數發送Get請求, 參數可以直接在url中拼接, 比如:

  1. $.get("../data/AjaxGetMethod.aspx?param=btnAjaxGet_click");  
  2.  //或者通過data參數傳遞:  
  3.  $.get("../data/AjaxGetMethod.aspx", { "param""btnAjaxGet2_click" });   

兩種方式效果相同, data參數會自動添加到請求的url中

如果url中的某個參數, 又通過data參數傳遞, 不會自動合并相同名稱的參數.

回調函數的簽名如下:

  1. function (data, textStatus) {  
  2.   // data could be xmlDoc, jsonObj, html, text, etc...  
  3.   this// the options for this ajax request  

其中data是返回的數據, testStatus表示狀態碼, 可能是如下值:

"timeout","error","notmodified","success","parsererror"

在回調函數中的this是獲取options對象的引用.有關options的各種說明, 請參見:

http://docs.jquery.com/Ajax/jQuery.ajax#options

type參數是指data數據的類型, 可能是下面的值:

"xml", "html", "script", "json", "jsonp", "text".

默認為"html".

jQuery.getJSON( url, [data], [callback] ) 方法就相當于 jQuery.get(url, [data],[callback], "json")

3. jQuery.getJSON( url, [data], [callback] )

Returns: XMLHttpRequest

相當于: jQuery.get(url, [data],[callback], "json")

說明:

通過 HTTP GET 請求載入 JSON 數據。

在 jQuery 1.2 中,您可以通過使用JSONP 形式的回調函數來加載其他網域的JSON數據,如 "myurl?callback=?"。jQuery 將自動替換 ? 為正確的函數名,以執行回調函數。

注意:此行以后的代碼將在這個回調函數執行前執行。

講解:

getJSON函數僅僅將get函數的type參數設置為"JSON"而已. 在回調函數中獲取的數據已經是按照JSON格式解析后的對象了:

  1. $.getJSON("../data/AjaxGetCityInfo.aspx", { "resultType""json" }, function(data, textStatus)  
  2. {  
  3.       alert(data.length);  
  4.       alert(data[0].CityName);  
  5. }); 

服務器端返回的字符串如下:

[{""pkid"":""0997"",""ProvinceId"":""XJ"",""CityName"":""阿克蘇"",""CityNameEn"":""Akesu"",""PostCode"":""843000"",""isHotCity"":false},

{""pkid"":""0412"",""ProvinceId"":""LN"",""CityName"":""鞍山"",""CityNameEn"":""Anshan"",""PostCode"":""114000"",""isHotCity"":false}]

示例中我返回的餓是一個數組, 使用data.length可以獲取數組的元素個數, data[0]訪問***個元素, data[0].CityName訪問***個元素的CityName屬性.

4.jQuery.getScript( url, [callback] )

Returns: XMLHttpRequest

相當于: jQuery.get(url, null, [callback], "script")

說明:

通過 HTTP GET 請求載入并執行一個 JavaScript 文件。

jQuery 1.2 版本之前,getScript 只能調用同域 JS 文件。 1.2中,您可以跨域調用 JavaScript 文件。注意:Safari 2 或更早的版本不能在全局作用域中同步執行腳本。如果通過 getScript 加入腳本,請加入延時函數。

講解:

以前我使用dojo類庫時官方默認的文件不支持跨域***導致我放棄使用dojo(雖然在網上找到了可以跨域的版本, 但是感覺不夠***). 所以我特別對這個函數的核心實現和使用做了研究.

首先了解此函數的jQuery內部實現, 仍然使用get函數, jQuery所有的Ajax函數包括get***都是用的是jQuery.ajax(), getScript將傳入值為"script"的type參數, ***在Ajax函數中對type為script的請求做了如下處理:

  1. var head = document.getElementsByTagName("head")[0];              
  2. var script = document.createElement("script");  
  3. script.src = s.url;  
  4.  
  5. //上面的代碼動態建立了一個script語句塊, 并且將其加入到head中:  
  6.  
  7. head.appendChild(script);  
  8.  
  9. //當腳本加載完畢后, 再從head中刪除:  
  10. // Handle Script loading  
  11.    if ( !jsonp ) {  
  12.       var done = false;  
  13.       // Attach handlers for all browsers  
  14.       script.onload = script.onreadystatechange = function(){  
  15.           if ( !done && (!this.readyState ||  
  16.               this.readyState == "loaded" || this.readyState == "complete") ) {  
  17.                  done = true;  
  18.                  success();  
  19.                  complete();  
  20.  
  21.                  // Handle memory leak in IE  
  22.                  script.onload = script.onreadystatechange = null;  
  23.                  head.removeChild( script );  
  24.            }  
  25.       };  
  26.   } 

我主要測試了此函數的跨域訪問和多瀏覽器支持.下面是結果:

  IE6 FireFox 注意事項
非跨域引用js 通過 通過 回調函數中的data和textStatus均可用
跨域引用js 通過 通過 回調函數中的data和textStatus均為undifined

#p#

下面是我關鍵的測試語句, 也用來演示如何使用getScript函數:

  1. $("#btnAjaxGetScript").click(function(event)  
  2. {  
  3.     $.getScript("../scripts/getScript.js"function(data, textStatus)  
  4.     {  
  5.         alert(data);  
  6.         alert(textStatus);  
  7.         alert(this.url);  
  8.     });  
  9. });  
  10.  
  11. $("#btnAjaxGetScriptCross").click(function(event)  
  12. {  
  13.     $.getScript("http://resource.elong.com/getScript.js"function(data, textStatus)  
  14.     {  
  15.         alert(data);  
  16.         alert(textStatus);  
  17.         alert(this.url);  
  18.     });  
  19. });  

5. jQuery.post( url, [data], [callback], [type] )

Returns: XMLHttpRequest

說明:

通過遠程 HTTP POST 請求載入信息。

這是一個簡單的 POST 請求功能以取代復雜 $.ajax 。請求成功時可調用回調函數。如果需要在出錯時執行函數,請使用 $.ajax。

講解:

具體用法和get相同, 只是提交方式由"GET"改為"POST".

6. jQuery.ajax( options )

Returns: XMLHttpRequest

說明:

通過 HTTP 請求加載遠程數據。

jQuery 底層 AJAX 實現。簡單易用的高層實現見 $.get, $.post 等。

$.ajax() 返回其創建的 XMLHttpRequest 對象。大多數情況下你無需直接操作該對象,但特殊情況下可用于手動終止請求。

$.ajax() 只有一個參數:參數 key/value 對象,包含各配置及回調函數信息。詳細參數選項見下。

注意: 如果你指定了 dataType 選項,請確保服務器返回正確的 MIME 信息,(如 xml 返回 "text/xml")。錯誤的 MIME 類型可能導致不可預知的錯誤。見 Specifying the Data Type for AJAX Requests 。

注意:如果dataType設置為"script",那么所有的遠程(不在同一域名下)的POST請求都將轉化為GET請求。(因為將使用DOM的script標簽來加載)

jQuery 1.2 中,您可以跨域加載 JSON 數據,使用時需將數據類型設置為 JSONP。使用 JSONP 形式調用函數時,如 "myurl?callback=?" jQuery 將自動替換 ? 為正確的函數名,以執行回調函數。數據類型設置為 "jsonp" 時,jQuery 將自動調用回調函數。

講解:

這是jQuery中Ajax的核心函數, 上面所有的發送Ajax請求的函數內部***都會調用此函數.options參數支持很多參數, 使用這些參數可以完全控制ajax請求. 在Ajax回調函數中的this對象也是options對象.

因為平時使用最多的還是簡化了的get和post函數, 所以在此不對options參數做詳細講解了. options參數文檔請見:http://docs.jquery.com/Ajax/jQuery.ajax#options

三. Ajax相關函數.

jQuery提供了一些相關函數能夠輔助Ajax函數。

1. jQuery.ajaxSetup( options )

無返回值

說明:

設置全局 AJAX 默認options選項。

講解:

有時我們的希望設置頁面上所有Ajax屬性的默認行為.那么就可以使用此函數設置options選項, 此后所有的Ajax請求的默認options將被更改.

options是一個對象, 可以設置的屬性請此連接:http://docs.jquery.com/Ajax/jQuery.ajax#toptions

比如在頁面加載時, 我使用下面的代碼設置Ajax的默認option選項:

  1. $.ajaxSetup({  
  2.     url: "../data/AjaxGetMethod.aspx",  
  3.     data: { "param""ziqiu.zhang" },  
  4.     global: false,  
  5.     type: "POST",  
  6.     success: function(data, textStatus) { $("#divResult").html(data); }  
  7. }); 

上面的代碼設置了一個Ajax請求需要的基本數據: 請求url, 參數, 請求類型, 成功后的回調函數.

此后我們可以使用無參數的get(), post()或者ajax()方法發送ajax請求.完整的示例代碼如下:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4.     <title>jQuery Ajax - Load</title>  
  5.  
  6.     <script type="text/javascript" src="../scripts/jquery-1.3.2-vsdoc2.js"></script>  
  7.  
  8.     <script type="text/javascript">  
  9.         $(document).ready(function()  
  10.         {  
  11.             $.ajaxSetup({  
  12.                 url: "../data/AjaxGetMethod.aspx",  
  13.                 data: { "param""ziqiu.zhang" },  
  14.                 global: false,  
  15.                 type: "POST",  
  16.                 success: function(data, textStatus) { $("#divResult").html(data); }  
  17.             });  
  18.  
  19.             $("#btnAjax").click(function(event) { $.ajax(); });  
  20.             $("#btnGet").click(function(event) { $.get(); });  
  21.             $("#btnPost").click(function(event) { $.post(); });  
  22.             $("#btnGet2").click(function(event) { $.get("../data/AjaxGetMethod.aspx",{ "param""other" }); });  
  23.  
  24.         });  
  25.  
  26.     </script>  
  27.  
  28. </head>    
  29. <body>      
  30.     <button id="btnAjax">不傳遞參數調用ajax()方法</button><br />  
  31.     <button id="btnGet">不傳遞參數調用get()方法</button><br />  
  32.     <button id="btnPost">不傳遞參數調用post()方法</button><br />  
  33.     <button id="btnGet2">傳遞參數調用get()方法, 使用全局的默認回調函數</button><br />  
  34.     <br />  
  35.     <div id="divResult"></div>  
  36. </body>  
  37. </html> 

注意當使用get()或者post()方法時, 除了type參數將被重寫為"GET"或者"POST"外, 其他參數只要不傳遞都是使用默認的全局option. 如果傳遞了某一個選項, 比如***一個按鈕傳遞了url和參數, 則本次調用會以傳遞的選項為準. 沒有傳遞的選項比如回調函數還是會使用全局option設置值.

2.serialize( )

Returns: String

說明:

序列表表格內容為字符串,用于 Ajax 請求。

序列化最常用在將表單數據發送到服務器端時. 被序列化后的數據是標準格式, 可以被幾乎所有的而服務器端支持.

為了盡可能正常工作, 要求被序列化的表單字段都有name屬性, 只有一個eid是無法工作的.

像這樣寫name屬性:

  1. <input id="email" name="email" type="text" />  

講解:

serialize()函數將要發送給服務器的form中的表單對象拼接成一個字符串. 便于我們使用Ajax發送時獲取表單數據. 這和一個From按照Get方式提交時, 自動將表單對象的名/值放到url上提交差不多.

比如這樣一個表單:

從零開始學習jQuery 之 AJAX快餐

生成的字符串為:single=Single¶m=Multiple¶m=Multiple3&check=check2&radio=radio1

提示:代碼見 chapter6\7-serialize.htm

3.serializeArray( )Returns: Array

Returns: Array<Object>

說明:

序列化表格元素 (類似 '.serialize()' 方法) 返回 JSON 數據結構數據。

注意,此方法返回的是JSON對象而非JSON字符串。需要使用插件或者第三方庫進行字符串化操作。

講解:

看說明文檔讓我有所失望, 使用此函數獲取到的是JSON對象, 但是jQuery中沒有提供將JSON對象轉化為JSON字符串的方法.

在JSON官網上沒有找到合適的JSON編譯器, ***選用了jquery.json這個jQuery插件:

http://code.google.com/p/jquery-json/

使用起來異常簡單:

  1. var thing = {plugin: 'jquery-json', version: 1.3};  
  2. var encoded = $.toJSON(thing);              //'{"plugin": "jquery-json", "version": 1.3}'  
  3. var name = $.evalJSON(encoded).plugin;      //"jquery-json"  
  4. var version = $.evalJSON(encoded).version;  // 1.3 

使用serializeArray( ) 再配合 $.toJSON 方法, 我們可以很方便的獲取表單對象的JSON, 并且轉換為JSON字符串:

  1. $("#results").html( $.toJSON( $("form").serializeArray() )); 

結果為:

[{"name": "single", "value": "Single"}, {"name": "param", "value": "Multiple"}, {"name": "param", "value": "Multiple3"}, {"name": "check", "value": "check2"}, {"name": "radio", "value": "radio1"}]

四. 全局Ajax事件

在jQuery.ajaxSetup( options ) 中的options參數屬性中, 有一個global屬性:

global

類型:布爾值

默認值: true

說明:是否觸發全局的Ajax事件.

這個屬性用來設置是否觸發全局的Ajax事件. 全局Ajax事件是一系列伴隨Ajax請求發生的事件.主要有如下事件:

名稱 說明
ajaxComplete( callback ) AJAX 請求完成時執行函數
ajaxError( callback ) AJAX 請求發生錯誤時執行函數
ajaxSend( callback ) AJAX 請求發送前執行函數
ajaxStart( callback ) AJAX 請求開始時執行函數
ajaxStop( callback ) AJAX 請求結束時執行函數
ajaxSuccess( callback ) AJAX 請求成功時執行函數

用一個示例講解各個事件的觸發順序:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4.     <title>jQuery Ajax - AjaxEvent</title>  
  5.  
  6.     <script type="text/javascript" src="../scripts/jquery-1.3.2.min.js"></script>  
  7.  
  8.     <script type="text/javascript">  
  9.         $(document).ready(function()  
  10.         {  
  11.  
  12.             $("#btnAjax").bind("click"function(event)  
  13.             {  
  14.                 $.get("../data/AjaxGetMethod.aspx");  
  15.             })  
  16.  
  17.             $("#divResult").ajaxComplete(function(evt, request, settings) { $(this).append('<div>ajaxComplete</div>'); })  
  18.             $("#divResult").ajaxError(function(evt, request, settings) { $(this).append('<div>ajaxError</div>'); })  
  19.             $("#divResult").ajaxSend(function(evt, request, settings) { $(this).append('<div>ajaxSend</div>'); })  
  20.             $("#divResult").ajaxStart(function() { $(this).append('<div>ajaxStart</div>'); })  
  21.             $("#divResult").ajaxStop(function() { $(this).append('<div>ajaxStop</div>'); })  
  22.             $("#divResult").ajaxSuccess(function(evt, request, settings) { $(this).append('<div>ajaxSuccess</div>'); })  
  23.  
  24.         });  
  25.  
  26.     </script>  
  27.  
  28. </head>  
  29. <body>      
  30.   <br /><button id="btnAjax">發送Ajax請求</button><br/>  
  31.   <div id="divResult"></div>  
  32. </body>  
  33. </html> 

結果如圖:

從零開始學習jQuery 之 AJAX快餐 

 

我們可以通過將默認options的global屬性設置為false來取消全局Ajax事件的觸發.

五. 注意事項

如果在Get請求發送的url中有兩個同名參數, 比如兩個param參數:

http://localhost/AjaxGetMethod.aspx?param=Multiple&param=Multiple3

使用服務器端方法獲取param參數:

  1. if (!String.IsNullOrEmpty(HttpContext.Current.Request["Param"]))  
  2. {  
  3.    param = HttpContext.Current.Request["Param"];  

 

此時獲取到得param是一個用","分隔多個值的字符串:

Multiple,Multiple3

六. 總結

本文介紹如何使用jquery實現Ajax功能. 用于發送Ajax請求的相關函數如load, get, getJSON和post這些漸變Ajax方法, 對于核心的ajax 方法沒有過多介紹, 主要是通過配置復雜的參數實現完全控制Ajax請求. 另外講解了ajax的輔助函數比如用于序列化表單對象為字符串的serialize()方法, 用于將表單對象序列化為JSON對象的serializeArray()方法. 這些在使用腳本獲取數據實現與服務器端交互是很有用, JSON格式的數據在處理大對象編程時將我們從混亂的屬性字符串中解放出來.

jQuery還提供錄入全局ajax事件這一個特殊的事件, 并且可以在一個對象上設置這些事件, 在發送Ajax請求的各個生命周期上會調用這些事件, 可以通過修改默認的options對象的global屬性打開或關閉全局事件.

目前本系列文章在加緊創作階段. 所以代碼和文章示例都沒有來得及重新整理. 下面是本章的代碼下載, 但是含有所有以前未整理的示例,請大家下載后看chapter6文件夾, 里面是本章的所有示例:下載

【編輯推薦】

  1. jQuery+Ajax+PHP+MySQL實現分類列表管理
  2. 手把手教你使用jQuery操作元素的屬性與樣式
  3. 從零開始學習jQuery之管理jQuery包裝集
  4. 從零開始學習jQuery之***的選擇器
  5. 從零開始學習jQuery之你必須知道的JavaScript
責任編輯:陳貽新 來源: 旺仔的博客
相關推薦

2011-06-07 14:15:01

jQuery

2011-05-05 11:03:34

jQueryjavascript

2011-06-09 10:17:17

jQuery

2011-06-01 14:51:54

jQuery

2011-04-19 13:32:01

jQueryjavascript

2011-04-26 15:07:48

jQuery

2023-11-14 16:14:49

2011-04-06 15:55:50

開發webOS程序webOS

2023-03-21 07:35:43

2011-09-05 14:17:54

Sencha ToucMVC

2014-07-22 13:09:21

android

2018-08-20 08:15:50

編程語言Go語言切片

2015-09-18 10:09:05

Swift

2015-11-17 16:11:07

Code Review

2018-04-18 07:01:59

Docker容器虛擬機

2019-01-18 12:39:45

云計算PaaS公有云

2024-12-06 17:02:26

2020-07-02 15:32:23

Kubernetes容器架構

2015-05-06 09:36:05

Java語言從零開始學習

2018-05-09 20:08:09

人工智能深度學習Python
點贊
收藏

51CTO技術棧公眾號

欧美a级在线| 成人影院在线视频| 国产一区二区伦理| 欧美裸体xxxx极品少妇| 欧美xxxxx精品| 毛片无码国产| 亚洲精品五月天| 久久精品ww人人做人人爽| 一区二区视频网站| 韩日欧美一区| 中文字幕亚洲第一| 日本黄色录像片| 日本一区二区中文字幕| 天天亚洲美女在线视频| 亚洲啪啪av| 凸凹人妻人人澡人人添| 国产一区在线观看麻豆| 日韩av免费看| 久久老司机精品视频| 欧美精品一二| 日韩av网址在线| 精品人妻一区二区三区免费| 亚洲四虎影院| 精品久久久久久久久久| 永久免费在线看片视频| 高清在线观看av| www.亚洲精品| 91精品综合久久| 在线观看亚洲国产| 毛片一区二区| 午夜精品久久久久久久99黑人 | 天干夜夜爽爽日日日日| 欧美午夜视频| 裸体女人亚洲精品一区| 永久免费毛片在线观看| 日韩中出av| 亚洲成人av片| 香蕉久久久久久av成人| 成人网av.com/| 欧美日韩精品三区| 污色网站在线观看| 日韩毛片一区| 欧美视频完全免费看| 国产免费成人在线| 国产精品论坛| 欧美日韩国产一区二区| 成人在线播放网址| 国产啊啊啊视频在线观看| 亚洲精品国产第一综合99久久| 亚洲欧美日韩国产成人综合一二三区| 国产在线你懂得| 国产网站一区二区三区| 欧美一二三区| 精品一二三区视频| 国产亚洲精品资源在线26u| 国内精品久久久久久久果冻传媒| 亚洲国产精品久久久久久6q| 国产成人a级片| 国产精品一区二区三区免费观看| 亚洲免费成人在线| 不卡av在线免费观看| 国产区一区二区| 天天色棕合合合合合合合| 成人爽a毛片一区二区免费| 成人高清在线观看| 天天爽夜夜爽夜夜爽| 久久综合色综合88| 色狠狠久久av五月综合| 五月天婷婷在线视频| 亚洲欧美另类综合偷拍| 丁香花在线影院观看在线播放| av白虎一区| 色偷偷成人一区二区三区91| 国产精品久久久毛片| 色综合一区二区日本韩国亚洲| 制服丝袜av成人在线看| 中文字幕乱码在线人视频| 理论片一区二区在线| 亚洲欧洲国产一区| 亚洲人与黑人屁股眼交| 韩日欧美一区| 国产精品久久久久久久av大片| 亚洲在线精品视频| 国产成人av网站| 欧美日韩国产综合在线| 五月天婷婷在线视频| 亚洲尤物在线视频观看| 欧美成人免费高清视频| 欧美激情啪啪| 亚洲国产精品字幕| 欧美一区二区三区粗大| 午夜日本精品| 国产精品9999| 懂色av蜜臀av粉嫩av分享吧 | 青青草自拍偷拍| 欧美日韩网址| 国产精品69久久久久| av一级黄色片| 久久精品这里都是精品| 国产日韩第一页| 在线看片国产福利你懂的| 欧美精品自拍偷拍| 少妇户外露出[11p]| 日韩88av| 2019av中文字幕| 国产特黄一级片| 久久精品日产第一区二区三区高清版 | 欧美日韩中文一区二区| 久久99久久99精品免观看粉嫩| 日本中文字幕第一页| 国产久卡久卡久卡久卡视频精品| 欧美日韩精品综合| 欧洲黄色一区| 欧美福利视频一区| 久久精品成人av| 黄色精品网站| 51成人做爰www免费看网站| 麻豆av电影在线观看| 亚洲一区二区三区不卡国产欧美| 日日躁夜夜躁aaaabbbb| 欧美人与动xxxxz0oz| 久久精品国产一区二区三区| 三级网站在线播放| 91小视频在线| 青草网在线观看| 高清不卡一区| 精品国产美女在线| 国产精品无码粉嫩小泬| 91蜜桃网址入口| 欧美精品卡一卡二| 亚洲精品在线播放| 久热精品在线视频| 97人妻精品一区二区三区| 国产女人18毛片水真多成人如厕| 日本wwww视频| 日韩精品免费一区二区三区竹菊| 欧美日韩不卡合集视频| 国产欧美一级片| 国产精品久久久久久久蜜臀| 精品www久久久久奶水| 亚洲日产av中文字幕| 午夜精品在线观看| 亚洲av成人精品日韩在线播放| 亚洲一区二三区| 少妇熟女视频一区二区三区| 欧美在线精品一区| aaa级精品久久久国产片| av网站大全在线| 日韩亚洲欧美成人一区| 欧美成人三级视频| 国产成人免费高清| 三上悠亚久久精品| 欧美午夜18电影| 欧美影院在线播放| 国产视频第一页在线观看| 91黄色免费看| 无码人中文字幕| 久久国产综合精品| 青青视频免费在线观看| 亚洲码欧美码一区二区三区| 久久久久久久一| 天天干天天插天天操| 欧美日韩亚洲精品一区二区三区| 亚洲AV无码国产精品| 久久久亚洲人| 在线不卡视频一区二区| 欧洲精品99毛片免费高清观看 | 久久人体大尺度| 国产一区二区日韩| 国产精品一区二区三区在线免费观看 | av成人 com a| 亚洲午夜精品久久久久久久久久久久| 中文在线观看免费高清| 亚洲激情在线播放| 你懂的在线观看网站| 日韩一区精品字幕| 99久re热视频精品98| 大奶一区二区三区| 国产精品777| 最近中文字幕免费mv2018在线| 亚洲精品一区二区三区香蕉| av大全在线观看| 国产精品国产三级国产普通话99 | 97精品视频在线观看| 头脑特工队2在线播放| 欧美日韩成人激情| 亚洲一区欧美在线| 欧美高清在线视频| 麻豆短视频在线观看| 激情视频一区| 午夜精品电影在线观看| 综合成人在线| 国产欧亚日韩视频| 99热99re6国产在线播放| 国产亚洲欧美另类中文| 超碰在线观看99| 欧美性生活久久| 国产午夜福利一区二区| 欧美国产激情一区二区三区蜜月| 日本少妇激三级做爰在线| 国产精品资源| 久久久无码中文字幕久...| 亚洲v天堂v手机在线| 91国产在线免费观看| gogo亚洲高清大胆美女人体 | 色老太综合网| 欧美激情精品久久久久| av男人的天堂在线| 亚洲精品一区二三区不卡| av观看在线免费| 在线免费视频一区二区| 日韩伦人妻无码| 亚洲精品免费播放| 波多野结衣久久久久| 久久综合成人精品亚洲另类欧美 | 亚洲日本一区二区三区| 欧美成人午夜精品免费| 国产91精品精华液一区二区三区 | jizzjizzjizz欧美| 国产欧美日韩免费看aⅴ视频| 韩日精品一区二区| 国内免费久久久久久久久久久| 免费大片在线观看www| 伊人激情综合网| 亚洲 小说区 图片区 都市| 精品国产乱码久久久久久久| 97在线播放免费观看| 欧美私模裸体表演在线观看| 伊人中文字幕在线观看| 精品毛片三在线观看| 国产午夜精品无码一区二区| 亚洲精品国产一区二区三区四区在线| 麻豆一区在线观看| 国产精品视频你懂的| 国产精品天天干| 国产偷v国产偷v亚洲高清| 大地资源二中文在线影视观看 | xxxx日本黄色| 国产亚洲欧美日韩在线一区| 在线不卡av电影| 久久毛片高清国产| 成人h动漫精品一区| 91亚洲精品久久久蜜桃| 在线观看国产三级| 91亚洲资源网| 不卡一区二区在线观看| 91麻豆国产福利精品| 中文字幕丰满乱子伦无码专区| 91一区在线观看| 色综合99久久久无码国产精品| 久久久久久久综合日本| 在线不卡av电影| 中文字幕av不卡| 亚洲人做受高潮| 亚洲精品欧美二区三区中文字幕| 欧美日韩国产一二三区| 亚洲天堂网中文字| 欧美日韩精品亚洲精品| 亚洲大片一区二区三区| 国产成人精品片| 91国偷自产一区二区三区成为亚洲经典| 自拍偷拍校园春色| 欧美日本韩国一区二区三区视频| 国产一区二区三区黄片| 日韩视频免费观看高清完整版 | 成人h动漫精品一区二区下载| 在线一区二区三区| 国产精品嫩草影院精东| 精品国产成人在线影院 | 99这里只有精品视频| 国产综合 伊人色| 欧美精选视频在线观看| 亚洲高潮无码久久| 国产一区二区三区的电影 | 国产欧美在线一区| 奇米一区二区三区| 欧美体内she精高潮| www.亚洲色图.com| 极品尤物一区二区| 亚洲综合图片区| 波多野结衣啪啪| 4438成人网| 色网站在线免费观看| 色噜噜狠狠狠综合曰曰曰 | 国产精品久久久久久久久久东京 | 久久99精品国产.久久久久| 无套白嫩进入乌克兰美女| 久久亚洲精精品中文字幕早川悠里 | 天天干在线观看| 日韩中文字幕免费看| 国产盗摄——sm在线视频| 国产精品高潮在线| 一区二区亚洲视频| 亚洲va韩国va欧美va精四季| 欧美体内she精视频在线观看| 精品www久久久久奶水| 国产精品 欧美精品| 免费看污片的网站| 亚洲午夜三级在线| 中文字幕精品在线观看| 亚洲福利影片在线| 久草免费在线| 国产成人极品视频| 成人午夜大片| 国产对白在线播放| 日本美女一区二区| 亚洲中文字幕一区| 一区二区三区中文字幕精品精品| 日韩欧美国产另类| 日韩电视剧在线观看免费网站| a免费在线观看| 国产精品一区二区女厕厕| 亚洲+变态+欧美+另类+精品| 亚洲精品天堂成人片av在线播放| 日韩高清一级片| 亚洲av成人片色在线观看高潮| 亚洲美女屁股眼交| 中文字幕欧美人妻精品一区蜜臀| 日韩精品视频在线观看免费| 色呦呦网站在线观看| 91精品视频在线看| 精品一区二区三| 情侣黄网站免费看| 99久久777色| 亚洲一区二区91| 日韩视频在线你懂得| 国产原创在线观看| 91精品久久久久久久久久久久久 | 日韩高清一区| 国产精品12p| 国模少妇一区二区三区| 少妇愉情理伦三级| 在线免费观看视频一区| 久色视频在线| 日本一区二区三区四区视频| 欧美日韩导航| 国产在线青青草| 91在线云播放| 久热这里只有精品6| 日韩精品免费视频| 欧美magnet| 欧美日韩精品免费观看| 六月丁香综合| 国产黄色大片免费看| 日本久久一区二区| 韩国中文字幕2020精品| 国产精品成人一区二区| 欧洲三级视频| 日韩av在线中文| 亚洲人成在线观看一区二区| 国产黄a三级三级三级| 久久99精品视频一区97| 大香伊人久久精品一区二区| 成年人看的毛片| 久久婷婷国产综合精品青草| 欧美人与禽zozzo禽性配| 精品国产精品网麻豆系列| 九九精品调教| 国产日韩欧美亚洲一区| 欧美一区=区| 337人体粉嫩噜噜噜| 在线不卡免费欧美| 牛牛电影国产一区二区| 久久精品国产美女| 日本视频一区二区三区| 久久av红桃一区二区禁漫| 日韩片之四级片| 激情黄产视频在线免费观看| 日韩欧美亚洲在线| 韩国女主播成人在线| 色播视频在线播放| 亚洲国产精品va在线| 碰碰在线视频| 一本一道久久a久久综合精品| 国产美女娇喘av呻吟久久| 欧美性生交大片| 亚洲第一区中文99精品| 亚洲成av在线| 2021国产视频| 久久―日本道色综合久久| 亚洲午夜精品久久久| 欧美日韩国产成人在线| 国产精品密蕾丝视频下载| 亚欧激情乱码久久久久久久久| 亚洲一区二区在线视频| 激情视频综合网| 美女av一区| 日本激情综合网| 亚洲资源在线观看| a黄色在线观看| 国产精品一区二区三区免费| 视频在线观看国产精品| 久久av高潮av无码av喷吹| 亚洲欧洲国产精品| 91麻豆精品激情在线观看最新 | 久久精品成人一区二区三区| 高清精品xnxxcom| 在线观看国产一级片| 日韩欧美一区二区在线| 亚洲wwwww|