1. jQuery Ajax 事件
Ajax請求會產生若干不同的事件,我們可以訂閱這些事件並在其中處理我們的邏輯。在jQuery這裡有兩種Ajax事件:局部事件 和 全域事件。
局部事件就是在每次的Ajax請求時在方法內定義的,例如:
$.ajax({ beforeSend: function(){ // Handle the beforeSend event }, complete: function(){ // Handle the complete event } // ... });
全域事件是每次的Ajax請求都會觸發的,它會向DOM中的所有元素廣播,在上面getScript() 範例中載入的腳本就是全域Ajax事件。全域事件可以如下定義:
$("#loading").bind("ajaxSend", function(){ $(this).show(); }).bind("ajaxComplete", function(){ $(this).hide(); });
或:
$("#loading").ajaxStart(function(){ $(this).show(); });
我們可以在特定的請求將全域事件停用,只要設定下global 選項就可以了:
$.ajax({ url: "test.html", global: false,// 禁用全局Ajax事件. // ... });
2 . jQuery.get(url, [data], [callback], [type]):使用GET方式來進行非同步請求
參數:
url (String ) : 發送請求的URL位址.
data (Map) : (可選) 要傳送給伺服器的數據,以Key/value 的鍵值對形式表示。
callback (Function) : (可選) 載入成功時回呼函數(只有當Response的回傳狀態是success才是呼叫該方法)。
type (String) : (可選)官方的說明是:Type of data to be sent。其實應該為客戶端請求的類型(JSON,XML,等等)
這是一個簡單的 GET 請求功能以取代複雜 $.ajax 。請求成功時可呼叫回調函數。如果需要在出錯時執行函數,請使用 $.ajax。範例程式碼:
$.get("./Ajax.aspx", {Action:"get",Name:"lulu"}, function (data, textStatus){ //返回的 data 可以是 xmlDoc, jsonObj, html, text, 等等. this; // 在这里this指向的是Ajax请求的选项配置信息; //alert(textStatus);//请求状态:success,error等等。 当然这里捕捉不到error,因为error的时候根本不会运行该回调函数 //alert(this); });
點擊傳送請求:
jQuery.get()回呼函數裡面的this ,指向的是Ajax請求的選項設定資訊
3. jQuery. post( url, [data], [callback], [type] ) :使用POST方式來進行非同步請求
參數:
url (String) : 傳送請求的URL位址.
data (Map) : (可選) 要傳送給伺服器的數據,以Key/value 的鍵值對形式表示。
callback (Function) : (可選) 載入成功時回呼函數(只有當Response的回傳狀態是success才是呼叫該方法)。
type (String) : (可選)官方的說明是:Type of data to be sent。其實應該為客戶端請求的類型(JSON,XML,等等)
這是一個簡單的 POST 請求功能以取代複雜 $.ajax 。請求成功時可呼叫回調函數。如果需要在出錯時執行函數,請使用 $.ajax。範例程式碼:
Ajax.aspx:
Response.ContentType = "application/json"; Response.Write("{result: '" + Request["Name"] + ",你好!(这消息来自服务器)'}");
jQuery 程式碼:
$.post("Ajax.aspx", { Action: "post", Name: "lulu" }, function (data, textStatus){ // data 可以是 xmlDoc, jsonObj, html, text, 等等. //this; // 这个Ajax请求的选项配置信息,请参考jQuery.get()说到的this alert(data.result); }, "json");
點擊提交:
這裡設定了請求的格式為"json":
如果你設定了請求的格式為"json",此時你沒有設定Response回來的ContentType 為:Response.ContentType = "application/json"; 那麼你將無法捕捉到傳回的資料。
注意一下,alert(data.result); 由於設定了Accept標頭為“json”,這裡回傳的data就是一個物件,並不需要用eval()來轉換為對象。
以上是jquery中的ajax事件和get、post請求說明的詳細內容。更多資訊請關注PHP中文網其他相關文章!