ajax() 方法通過 HTTP 請求加載遠程數據。
該方法是 jQuery 底層 AJAX 實現。簡單易用的高層實現見 $.get, $.post 等。$.ajax() 返回其創建的 XMLHttpRequest 對象。大多數情況下你無需直接操作該函數,除非你需要操作不常用的選項,以獲得更多的靈活性。
最簡單的情況下,$.ajax() 可以不帶任何參數直接使用。
注意:所有的選項都可以通過 $.ajaxSetup() 函數來全局設置。
語法
jQuery.ajax([settings])
參數 | 描述 |
---|---|
settings | 可選。用于配置 Ajax 請求的鍵值對集合。 可以通過 $.ajaxSetup() 設置任何選項的默認值。 |
jQuery.get()
使用一個HTTP GET 請求從服務器加載數據。
jQuery.get(url [,data] [,success(data,textStatus,jqXHR)] [dtaType])
url 一個包含發送請求的URL
data 發送給服務器的字符串后鍵值對
success() 當請求成功時回調的函數
dataType 從服務器返回的預期數據。
用法:
$.get("test.cgi", { name: "John", time: "2pm" }, function(data){ alert("Data Loaded: " + data); });
jQuery.getJSON()
使用一個HTTP GET 請求服務器加載JSON 編碼的數據。
jQuery.getJSON(url [,data] [,success(data,textStatus,jqXHR)])
url 一個包含發送請求的URL
data 發送給服務器的字符串后鍵值對
success() 當請求成功時回調的函數
jQuery.getScript()
使用一個HTTP GET請求從服務器加載并執行一個JavaScript文件。
jQuery.getScript(url[success(script,textStatus,jqXHR)])
url 一個包含發送請求的URL
data 發送給服務器的字符串后鍵值對
用法:
$.getScript("ajax/test.js", function(data, textStatus, jqxhr) { console.log(data); //data returned console.log(textStatus); //success console.log(jqxhr.status); //200 console.log('Load was performed.'); });
jQuery.post([settings])
使用一個HTTP POST請求從服務器加載數據。
jQuery.post(url[,data][,success(data,textStatus,jqXHR)][,dataType])
url 一個包含發送請求的URL
data 發送給服務器的字符串后鍵值對
success() 當請求成功時回調的函數
用法:
$.post("test.php", { name: "John", time: "2pm" }, function(data) { alert("Data Loaded: " + data); });
.load()
從服務器載入數據并且將返回的HTML代碼并插入至匹配的元素中。
.load(url[,data][,complete(responseText,textStatus,XMLHttpRequest)])
url 一個包含發送請求的URL
data 發送給服務器的字符串后鍵值對
complete 當請求成功時回調的函數
用法:
$('#result').load('ajax/test.html #container');
jQuery.ajax()
執行一個異步的HTTP(ajax)的請求。
參數:
url 類型: Sting 發送請求的地址(默認當前頁面)
type 類型:Sting (默認為GET) 請求方式(”POST“或”GET“)
timeout 類型:Number 設置請求超時時間(毫秒),此設置默認覆蓋全局。
async 類型:Boolean 默認設置(true)默認設置下所有請求均為一步請求,如果需要同步請求,設置為false。
beforeSend 類型:function 發送請求前可修改 XMLHttpRequest 對象的函數,如添加自定義 HTTP 頭。XMLHttpRequest 對象是唯一的參數。
cache 類型:Boolean 默認為(true) 設置為false 將不會從瀏覽器緩存中加載請求信息。
complete 類型:Function 請求完成后回調函數,(請求成功或失敗時均調用)參數: XMLHttpRequest 對象,成功信息字符串。function ( XMLHttpRequest, textStatus) {this; // the options for this ajax request}
contentType 類型為:String 發送信息至服務器時內容編碼類型,默認值適合大多數應用場合。
data 類型:Object String 發送到服務器的數據。將自動轉換為請求字符串格式,GET請求附加在URL后
dataType 類型:String 預期服務器返回的數據類型, ”xml“返回XML文檔。”html“返回純文本信息,包含script 元素。”script“返回純文本JavaScript 代碼,不會自動緩存 結果。”json“返回JSON 數組。”jsonp“JSONP格式。
error 類型:function 請求失敗時將調用此方法。
global 類型:Boolean 是否觸發全局AJAX事件。默認為(true) 設置為false 將不會觸發全局ajax 事件,可用于控制不同的AJAX事件。
ifModified 類型:Boolean 默認為false 僅在服務器數據改變時獲取新數據。
processData 類型:Boolean 默認為(true)默認情況下,發送的數據發送的數據將被轉換為對象(技術上講并非字符串) 以配合默認內容類型 "application/x-www-form- urlencoded"。如果要發送 DOM 樹信息或其它不希望轉換的信息,請設置為 false。
success 類型:Function 請求成功后回調函數。這個方法有兩個參數:服務器返回數據,返回狀態。
$(document).ready(function() { jQuery("#clearCac").click(function() { jQuery.ajax({ url: "/Handle/Do.aspx", type: "post", data: { id: '0' }, dataType: "json", success: function(msg) { alert(msg); }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); }, complete: function(XMLHttpRequest, textStatus) { this; // 調用本次AJAX請求時傳遞的options參數 } }); });});
error事件返回的第一個參數XMLHttpRequest有一些有用的信息:
XMLHttpRequest.readyState:
狀態碼
0 - (未初始化)還沒有調用send()方法
1 - (載入)已調用send()方法,正在發送請求
2 - (載入完成)send()方法執行完成,已經接收到全部響應內容
3 - (交互)正在解析響應內容
4 - (完成)響應內容解析完成,可以在客戶端調用了
XMLHttpRequest.status:
1xx-信息提示
這些狀態代碼表示臨時的響應。客戶端在收到常規響應之前,應準備接收一個或多個1xx響應。
100-繼續。
101-切換協議。
2xx-成功
這類狀態代碼表明服務器成功地接受了客戶端請求。
200-確定。客戶端請求已成功。
201-已創建。
202-已接受。
203-非權威性信息。
204-無內容。
205-重置內容。
206-部分內容。
3xx-重定向
客戶端瀏覽器必須采取更多操作來實現請求。例如,瀏覽器可能不得不請求服務器上的不同的頁面,或通過代理服務器重復該請求。
301-對象已永久移走,即永久重定向。
302-對象已臨時移動。
304-未修改。
307-臨時重定向。
4xx-客戶端錯誤
發生錯誤,客戶端似乎有問題。例如,客戶端請求不存在的頁面,客戶端未提供有效的身份驗證信息。400-錯誤的請求。
401-訪問被拒絕。IIS定義了許多不同的401錯誤,它們指明更為具體的錯誤原因。這些具體的錯誤代碼在瀏覽器中顯示,但不在IIS日志中顯示:
401.1-登錄失敗。
401.2-服務器配置導致登錄失敗。
401.3-由于ACL對資源的限制而未獲得授權。
401.4-篩選器授權失敗。
401.5-ISAPI/CGI應用程序授權失敗。
401.7–訪問被Web服務器上的URL授權策略拒絕。這個錯誤代碼為IIS6.0所專用。
403-禁止訪問:IIS定義了許多不同的403錯誤,它們指明更為具體的錯誤原因:
403.1-執行訪問被禁止。
403.2-讀訪問被禁止。
403.3-寫訪問被禁止。
403.4-要求SSL。
403.5-要求SSL128。
403.6-IP地址被拒絕。
403.7-要求客戶端證書。
403.8-站點訪問被拒絕。
403.9-用戶數過多。
403.10-配置無效。
403.11-密碼更改。
403.12-拒絕訪問映射表。
403.13-客戶端證書被吊銷。
403.14-拒絕目錄列表。
403.15-超出客戶端訪問許可。
403.16-客戶端證書不受信任或無效。
403.17-客戶端證書已過期或尚未生效。
403.18-在當前的應用程序池中不能執行所請求的URL。這個錯誤代碼為IIS6.0所專用。
403.19-不能為這個應用程序池中的客戶端執行CGI。這個錯誤代碼為IIS6.0所專用。
403.20-Passport登錄失敗。這個錯誤代碼為IIS6.0所專用。
404-未找到。
404.0-(無)–沒有找到文件或目錄。
404.1-無法在所請求的端口上訪問Web站點。
404.2-Web服務擴展鎖定策略阻止本請求。
404.3-MIME映射策略阻止本請求。
405-用來訪問本頁面的HTTP謂詞不被允許(方法不被允許)
406-客戶端瀏覽器不接受所請求頁面的MIME類型。
407-要求進行代理身份驗證。
412-前提條件失敗。
413–請求實體太大。
414-請求URI太長。
415–不支持的媒體類型。
416–所請求的范圍無法滿足。
417–執行失敗。
423–鎖定的錯誤。
5xx-服務器錯誤
服務器由于遇到錯誤而不能完成該請求。
500-內部服務器錯誤。
500.12-應用程序正忙于在Web服務器上重新啟動。
500.13-Web服務器太忙。
500.15-不允許直接請求Global.asa。
500.16–UNC授權憑據不正確。這個錯誤代碼為IIS6.0所專用。
500.18–URL授權存儲不能打開。這個錯誤代碼為IIS6.0所專用。
500.100-內部ASP錯誤。
501-頁眉值指定了未實現的配置。
502-Web服務器用作網關或代理服務器時收到了無效響應。
502.1-CGI應用程序超時。
502.2-CGI應用程序出錯。application.
503-服務不可用。這個錯誤代碼為IIS6.0所專用。
504-網關超時。
505-HTTP版本不受支持。
jQuery.param()
創建一個數組,一個普通的對象,或一個jQuery對象的序列化表現形似,用于URL查詢字符串或Ajax請求。
jQuery.param(obj)
obj 一個用來序列化的一個數組,一個普通的對象,或一個jQuery對象。
jQuery.param( obj, traditional )
obj 一個用來序列化的一個數組,一個普通的對象,或一個jQuery對象。
traditional
一個布爾值,指示是否執行了傳統的“shallow”的序列化。
$.param({ a: [2,3,4] }) // "a[]=2&a[]=3&a[]=4"
$.param({ a: { b:1,c:2 }, d: [3,4,{ e:5 }] }) // "a[b]=1&a[c]=2&d[]=3&d[]=4&d[2][e]=5"