用法
jQuery.ajax( url [, settings ] ) => jqXHR
jQuery.ajax( url [, settings ] ) => jqXHR
說明:執行異步 HTTP (Ajax) 請求。
-
添加的版本:1.5
jQuery.ajax( url [, settings ] )
-
url類型:String包含請求發送到的 URL 的字符串。
-
settings類型:PlainObject一組配置 Ajax 請求的鍵/值對。所有設置都是可選的。可以使用 $.ajaxSetup() 為任何選項設置默認值。有關所有設置的完整列表,請參閱下麵的jQuery.ajax( settings )。
-
-
添加的版本:1.0
jQuery.ajax( [settings ] )
-
settings類型:PlainObject一組配置 Ajax 請求的鍵/值對。所有設置都是可選的。可以使用 $.ajaxSetup() 為任何選項設置默認值。
-
accepts(默認:
depends on dataType
)類型:PlainObject一組映射給定的鍵/值對dataType
到它的 MIME 類型,它在Accept
請求標頭。這個標頭告訴服務器它將接受什麽樣的響應作為返回。例如下麵定義了一個自定義類型mycustomtype
與請求一起發送:$.ajax({ accepts: { mycustomtype: 'application/x-some-custom-type' }, // Instructions for how to deserialize a `mycustomtype` converters: { 'text mycustomtype': function(result) { // Do Stuff return newresult; } }, // Expect a `mycustomtype` back from server dataType: 'mycustomtype' });
converters
使其正常工作。 -
async(默認:
true
)類型:Boolean默認情況下,所有請求都是異步發送的(即設置為true
默認情況下)。如果您需要同步請求,請將此選項設置為false
. Cross-domain 請求和dataType: "jsonp"
請求不支持同步操作。請注意,同步請求可能會暫時鎖定瀏覽器,從而在請求處於活動狀態時禁用任何操作。As of jQuery 1.8, 指某東西的用途async: false
與 jqXHR ($.Deferred
)已棄用;您必須使用成功/錯誤/完成回調選項而不是 jqXHR 對象的相應方法,例如jqXHR.done()
. -
beforeSend類型:Function(jqXHRjqXHR,PlainObject設置)一個預請求回調函數,可用於在發送之前修改 jqXHR(在 jQuery 1.4.x 中為 XMLHTTPRequest)對象。使用它來設置自定義標題等。 jqXHR 和設置對象作為參數傳遞。這是個阿賈克斯事件.返回
false
在裏麵beforeSend
函數將取消請求。As of jQuery 1.5, 這beforeSend
無論請求的類型如何,都會調用選項。 -
cache(默認:
true, false for dataType 'script' and 'jsonp'
)類型:Boolean如果設置為false
,它將強製瀏覽器不緩存請求的頁麵。Note:環境cache
設置為 false 僅適用於 HEAD 和 GET 請求。它通過將 "_={timestamp}" 附加到 GET 參數來工作。其他類型的請求不需要該參數,除非在 IE8 中對已由 GET 請求的 URL 進行 POST。 -
complete請求完成時調用的函數(之後
success
和error
回調被執行)。該函數被傳遞了兩個參數:jqXHR(在 jQuery 1.4.x 中,XMLHTTPRequest)對象和一個對請求狀態進行分類的字符串("success"
,"notmodified"
,"nocontent"
,"error"
,"timeout"
,"abort"
, 或者"parsererror"
)。As of jQuery 1.5, 這complete
setting 可以接受一個函數數組。每個函數都會被依次調用。這是個阿賈克斯事件. -
contents類型:PlainObject字符串/regular-expression 對的對象,根據其內容類型確定 jQuery 如何解析響應。(添加的版本:1.5)
-
contentType(默認:
'application/x-www-form-urlencoded; charset=UTF-8'
)向服務器發送數據時,使用此內容類型。默認為“application/x-www-form-urlencoded; charset=UTF-8”,這在大多數情況下都可以。如果您明確地將 content-type 傳遞給$.ajax()
,那麽它總是被發送到服務器(即使沒有發送數據)。從 jQuery 1.6 開始,您可以通過false
告訴 jQuery 不要設置任何內容類型標頭。Note:W3C XMLHttpRequest 規範規定字符集始終為 UTF-8;指定另一個字符集不會強製瀏覽器更改編碼。Note:對於 cross-domain 請求,將內容類型設置為除application/x-www-form-urlencoded
,multipart/form-data
, 或者text/plain
將觸發瀏覽器向服務器發送預檢 OPTIONS 請求。 -
context類型:PlainObject該對象將是所有Ajax-related 回調的上下文。默認情況下,上下文是一個對象,表示調用中使用的 Ajax 設置 (
$.ajaxSettings
與傳遞給的設置合並$.ajax
)。例如,指定一個 DOM 元素作為上下文將使complete
請求的回調,如下所示:$.ajax({ url: "test.html", context: document.body }).done(function() { $( this ).addClass( "done" ); });
-
converters(默認:
{"* text": window.String, "text html": true, "text json": jQuery.parseJSON, "text xml": jQuery.parseXML}
)類型:PlainObject包含dataType-to-dataType 轉換器的對象。每個轉換器的值都是一個返回響應的轉換值的函數。(添加的版本:1.5) -
crossDomain(默認:
false for same-domain requests, true for cross-domain requests
)類型:Boolean如果您希望在同一域上強製執行跨域請求(例如 JSONP),請將 crossDomain 的值設置為true
.例如,這允許服務器端重定向到另一個域。(添加的版本:1.5) -
data類型:PlainObject 或 String 或 Array
要發送到服務器的數據。如果 HTTP 方法不能具有實體主體,例如 GET,則將
data
附加到 URL。當
data
是一個對象時,jQuery 從對象的鍵/值對生成數據字符串,除非processData
選項設置為false
。例如,{ a: "bc", d: "e,f" }
被轉換為字符串"a=bc&d=e%2Cf"
。如果值是一個數組,jQuery 會根據traditional
設置的值(如下所述)使用相同的鍵序列化多個值。例如,{ a: [1,2] }
變為字符串"a%5B%5D=1&a%5B%5D=2"
,默認設置為traditional: false
。什麽時候
data
作為字符串傳遞,它應該已經被編碼使用正確的編碼contentType
,默認情況下是application/x-www-form-urlencoded
.在帶有
dataType: "json"
或dataType: "jsonp"
的請求中,如果字符串在 URL 中的任何位置包含雙問號 (??
) 或在查詢字符串中包含單個問號 (?
),則將其替換為生成的值通過 jQuery 對頁麵上的每個庫副本都是唯一的(例如jQuery21406515378922229067_1479880736745
)。 -
dataFilter用於處理 XMLHttpRequest 的原始響應數據的函數。這是一個預過濾函數,用於清理響應。您應該返回經過清理的數據。該函數接受兩個參數:從服務器返回的原始數據和'dataType' 參數。
-
dataType(默認:
Intelligent Guess (xml, json, script, or html)
)類型:String您期望從服務器返回的數據類型。如果沒有指定,jQuery 將嘗試根據響應的 MIME 類型推斷它(XML MIME 類型將產生 XML,在 1.4 中 JSON 將產生一個 JavaScript 對象,在 1.4 中腳本將執行腳本,其他任何東西都會作為字符串返回)。可用的類型(以及作為第一個參數傳遞給成功回調的結果)是:"xml"
:返回可以通過 jQuery 處理的 XML 文檔。"html"
:將 HTML 作為純文本返回;包含的腳本標簽在插入 DOM 時進行評估。-
"script"
:將響應評估為 JavaScript 並將其作為純文本返回。通過附加查詢字符串參數來禁用緩存,_=[TIMESTAMP]
, 到 URL,除非cache
選項設置為true
.Note:這會將 remote-domain 請求的 POST 轉換為 GET。在 jQuery 3.5.0 之前,使用腳本的 HTTP 響應不成功Content-Type
仍然被處決。 "json"
:將響應評估為 JSON 並返回一個 JavaScript 對象。 Cross-domain"json"
請求具有回調占位符,例如?callback=?
使用 JSONP 執行,除非請求在其請求選項中包含jsonp: false
。 JSON數據被嚴格解析;任何格式錯誤的 JSON 都會被拒絕並引發解析錯誤。從 jQuery 1.9 開始,空響應也會被拒絕;服務器應該返回null
或{}
的響應。 (有關正確的 JSON 格式的更多信息,請參閱json.org。)"jsonp"
:使用 JSONP 加載到 JSON 塊中。在 URL 的末尾添加一個額外的"?callback=?"
以指定回調。通過將查詢字符串參數"_=[TIMESTAMP]"
附加到 URL 來禁用緩存,除非cache
選項設置為true
。"text"
:純文本字符串。- 多個空格分隔的值:從 jQuery 1.5 開始, jQuery 可以將 Content-Type 標頭中收到的數據類型轉換為您需要的數據類型。例如,如果您希望將文本響應視為 XML,請使用
"text xml"
對於數據類型。您還可以發出 JSONP 請求,將其作為文本接收,並由 jQuery 解釋為 XML:"jsonp text xml"
.類似地,一個速記字符串如"jsonp xml"
將首先嘗試從 jsonp 轉換為 xml,如果失敗,則從 jsonp 轉換為文本,然後從文本轉換為 xml。
-
error請求失敗時調用的函數。該函數接收三個參數:jqXHR(在 jQuery 1.4.x 中,XMLHttpRequest)對象,一個說明發生的錯誤類型的字符串和一個可選的異常對象(如果發生)。第二個參數的可能值(除了
null
) 是"timeout"
,"error"
,"abort"
, 和"parsererror"
.發生 HTTP 錯誤時,errorThrown
接收 HTTP 狀態的文本部分,例如 "Not Found" 或“內部服務器錯誤”。 (在 HTTP/2 中它可能是一個空字符串)As of jQuery 1.5, 這error
setting 可以接受一個函數數組。每個函數都會被依次調用。Note:This handler is not called for cross-domain script and cross-domain JSONP requests.
這是個阿賈克斯事件. -
global(默認:
true
)類型:Boolean是否為此請求觸發全局 Ajax 事件處理程序。默認值為true
。設置為false
以防止觸發ajaxStart
或ajaxStop
等全局處理程序。這可用於控製各種 Ajax Events 。 -
headers(默認:
{}
)類型:PlainObject使用 XMLHttpRequest 傳輸與請求一起發送的附加標頭鍵/值對的對象。標題X-Requested-With: XMLHttpRequest
總是添加,但它的默認值XMLHttpRequest
值可以在這裏更改。中的值headers
設置也可以從內部覆蓋beforeSend
函數。(添加的版本:1.5) -
ifModified(默認:
false
)類型:Boolean僅當自上次請求以來響應已更改時,才允許請求成功。這是通過檢查Last-Modified 標頭來完成的。默認值為false
,忽略標題。在 jQuery 1.4 中,此技術還檢查服務器指定的 'etag' 以捕獲未修改的數據。 -
isLocal(默認:
depends on current location protocol
)類型:Boolean允許當前環境被識別為"local,"(例如文件係統),即使默認情況下 jQuery 不識別它。以下協議目前被認為是本地的:file
,*-extension
, 和widget
.如果isLocal
設置需要修改,建議修改一次$.ajaxSetup()
方法。(添加的版本:1.5.1) -
jsonp覆蓋 JSONP 請求中的回調函數名稱。在 url 中查詢字符串的 'callback=?' 部分中,將使用此值而不是 'callback'。所以
{jsonp:'onJSONPLoad'}
會導致'onJSONPLoad=?'
傳遞給服務器。As of jQuery 1.5, 設置jsonp
選項false
防止 jQuery 將 "?callback" 字符串添加到 URL 或嘗試使用 "=?" 進行轉換。在這種情況下,您還應該顯式設置jsonpCallback
環境。例如,{ jsonp: false, jsonpCallback: "callbackName" }
.如果您不信任 Ajax 請求的目標,請考慮設置jsonp
屬性false
出於安全原因。 -
jsonpCallback指定 JSONP 請求的回調函數名稱。將使用此值代替 jQuery 自動生成的隨機名稱。最好讓 jQuery 生成一個唯一的名稱,因為這樣可以更輕鬆地管理請求並提供回調和錯誤處理。當您想要啟用更好的 GET 請求瀏覽器緩存時,您可能需要指定回調。As of jQuery 1.5, 你也可以使用一個函數來進行這個設置, 在這種情況下, 的值
jsonpCallback
設置為該函數的返回值。 -
method(默認:
'GET'
)類型:String -
mimeType類型:String要覆蓋的 mime 類型XHR啞劇類型。(添加的版本:1.5.1)
-
password類型:String與 XMLHttpRequest 一起使用以響應 HTTP 訪問身份驗證請求的密碼。
-
processData(默認:
true
)類型:Boolean默認情況下,作為對象傳遞給data
選項的數據(從技術上講,是字符串以外的任何內容)將被處理並轉換為查詢字符串,以適應默認的content-type“application/x-www-form-urlencoded”。如果要發送 DOMDocument 或其他未處理的數據,請將此選項設置為false
。 -
scriptAttrs類型:PlainObject定義要在 "script" 或 "jsonp" 請求中使用的具有附加屬性的對象。鍵代表屬性的名稱,值是屬性的值。如果提供此對象,它將強製使用script-tag 傳輸。例如,這可以用來設置
nonce
,integrity
, 或者crossorigin
屬性以滿足內容安全策略要求。(添加的版本:3.4.0) -
scriptCharset類型:String僅在使用 "script" 傳輸時適用。在請求中使用的腳本標記上設置
charset
屬性。當本地頁麵上的字符集與遠程腳本上的字符集不同時使用。或者,可以在scriptAttrs
中指定charset
屬性,這也將確保使用"script" 傳輸。 -
statusCode(默認:
{}
)類型:PlainObject響應具有相應代碼時要調用的數字 HTTP 代碼和函數的對象。例如,以下將在響應狀態為 404 時發出警報:
$.ajax({ statusCode: { 404: function() { alert( "page not found" ); } } });
如果請求成功,狀態碼函數采用與成功回調相同的參數;如果它導致錯誤(包括 3xx 重定向),它們采用與
(添加的版本:1.5)error
回調相同的參數。 -
success請求成功時調用的函數。該函數傳遞了三個參數: 從服務器返回的數據,根據
dataType
參數或dataFilter
回調函數,如果指定;說明狀態的字符串;和jqXHR
(在 jQuery 1.4.x 中,XMLHttpRequest)對象。As of jQuery 1.5,the success setting can accept an array of functions. Each function will be called in turn.
這是個阿賈克斯事件. -
timeout類型:Number為請求設置超時(以毫秒為單位)。值為 0 表示不會有超時。這將覆蓋任何全局超時設置jQuery.ajaxSetup().超時時間從點開始
$.ajax
撥調用;如果有幾個其他請求正在進行並且瀏覽器沒有可用的連接,則請求可能會在發送之前超時。In jQuery 1.4.x and below,如果請求超時,XMLHttpRequest 對象將處於無效狀態;訪問任何對象成員都可能引發異常。In Firefox 3.0+ only,腳本和 JSONP 請求不能被超時取消;即使腳本在超時期限之後到達,它也會運行。 -
traditional類型:Boolean如果您希望使用 param serialization 的傳統樣式,請將其設置為
true
。 -
type(默認:
'GET'
)類型:Stringmethod
的別名。如果您使用的是 1.9.0 之前的 jQuery 版本,則應該使用type
。 -
url(默認:
The current page
)類型:String包含請求發送到的 URL 的字符串。 -
username類型:String與 XMLHttpRequest 一起使用以響應 HTTP 訪問身份驗證請求的用戶名。
-
xhr(默認:
ActiveXObject when available (IE), the XMLHttpRequest otherwise
)類型:Function ()創建 XMLHttpRequest 對象的回調。可用時默認為 ActiveXObject (IE),否則默認為 XMLHttpRequest。重寫以提供您自己的 XMLHttpRequest 實現或對工廠的增強。 -
xhrFields類型:PlainObject
fieldName-fieldValue 對的對象設置在本機
XHR
對象上。例如,如果需要,您可以使用它為cross-domain 請求將withCredentials
設置為true
。$.ajax({ url: a_cross_domain_url, xhrFields: { withCredentials: true } });
在 jQuery 1.5 中, 這
(添加的版本:1.5.1)withCredentials
屬性未傳播到本地XHR
因此需要它的 CORS 請求將忽略此標誌。因此,如果您需要使用 jQuery 1.5.1+,我們建議您使用它。
-
-
$.ajax()
函數是 jQuery 發送的所有 Ajax 請求的基礎。通常不需要直接調用此函數,因為有幾個更高級別的替代方案,如 $.get()
和 .load()
可用且更易於使用。但是,如果需要不太常用的選項,則可以更靈活地使用$.ajax()
。
最簡單的 $.ajax()
函數可以不帶參數調用:
|
注意:默認設置可以通過使用全局設置$.ajaxSetup()
函數。
此示例不使用任何選項,加載當前頁麵的內容,但對結果不執行任何操作。要使用結果,您可以實現其中一個回調函數。
jqXHR 對象
返回的 jQuery XMLHttpRequest (jqXHR) 對象$.ajax()
從 jQuery 1.5 開始是瀏覽器原生 XMLHttpRequest 對象的超集。例如,它包含responseText
和responseXML
屬性,以及getResponseHeader()
方法。當傳輸機製不是 XMLHttpRequest(例如,JSONP 請求的腳本標記)時,jqXHR
對象盡可能模擬原生 XHR 函數。
從 jQuery 1.5.1 開始, 這jqXHR
對象還包含overrideMimeType()
方法(它在 jQuery 1.4.x 中也可用,但在 jQuery 1.5 中被暫時刪除)。這.overrideMimeType()
方法可用於beforeSend()
回調函數,例如,修改響應 content-type 標頭:
|
從 jQuery 1.5 開始,$.ajax()
返回的 jqXHR 對象實現了 Promise 接口,為它們提供了 Promise 的所有屬性、方法和行為(有關更多信息,請參閱Deferred object)。這些方法采用一個或多個在$.ajax()
請求終止時調用的函數參數。這允許您在單個請求上分配多個回調,甚至在請求完成後分配回調。 (如果請求已經完成,則立即觸發回調。) jqXHR 對象的可用 Promise 方法包括:
-
jqXHR.done(函數(數據,文本狀態,jqXHR){});
成功回調選項的替代構造,請參閱
deferred.done()
了解實現細節。 -
jqXHR.fail(function(jqXHR, textStatus, errorThrown) {});
錯誤回調選項的替代構造,
.fail()
方法替換了已棄用的.error()
方法。有關實施細節,請參閱deferred.fail()
。 -
jqXHR.always(函數(數據|jqXHR, textStatus, jqXHR|errorThrown) { });(在 jQuery 1.6 中添加)
完整回調選項的替代構造,
.always()
方法替換了已棄用的.complete()
方法。響應成功的請求,該函數的參數與
.done()
的參數相同:data、textStatus 和 jqXHR 對象。對於失敗的請求,參數與.fail()
的參數相同:jqXHR 對象、textStatus 和 errorThrown。有關實施細節,請參閱deferred.always()
。 -
jqXHR.then(函數(數據,textStatus,jqXHR){},函數(jqXHR,textStatus,errorThrown){});
結合了
.done()
和.fail()
方法的函數,允許(從 jQuery 1.8 開始)底層的 Promise 被操縱。有關實施細節,請參閱deferred.then()
棄用通知: jqXHR.success()
,jqXHR.error()
, 和jqXHR.complete()
回調從 jQuery 3.0 開始被刪除。您可以使用jqXHR.done()
,jqXHR.fail()
, 和jqXHR.always()
反而。
|
所有回調中的this
引用是設置中傳遞給$.ajax
的context
選項中的對象;如果未指定context
,則this
是對Ajax 設置本身的引用。
為了與 XMLHttpRequest
向後兼容,jqXHR
對象將公開以下屬性和方法:
-
readyState
responseXML
和/或responseText
當底層請求分別以 xml 和/或文本響應時-
status
statusText
(在 HTTP/2 中可能是空字符串)-
abort( [ statusText ] )
getAllResponseHeaders()
作為字符串-
getResponseHeader( name )
-
overrideMimeType( mimeType )
setRequestHeader( name, value )
通過用新值替換舊值而不是將新值連接到舊值來偏離標準-
statusCode( callbacksByStatusCode )
但是,沒有提供 onreadystatechange
機製,因為 done
、 fail
、 always
和 statusCode
涵蓋了所有可能的要求。
回調函數隊列
beforeSend
、 error
、 dataFilter
、 success
和 complete
選項都接受在適當時間調用的回調函數。
從 jQuery 1.5 開始, 這fail
和done
,並且,從 jQuery 1.6 開始,always
回調鉤子是first-in、first-out 托管隊列,允許每個鉤子有多個回調。看延遲對象方法,這些是在內部實現的$.ajax()
回調鉤子。
$.ajax()
提供的回調鉤子如下:
beforeSend
回調選項被調用;它接收jqXHR
對象和settings
對象作為參數。error
回調選項被調用,如果請求失敗。它接收jqXHR
、指示錯誤類型的字符串和異常對象(如果適用)。一些內置錯誤會提供一個字符串作為異常對象:"abort"、"timeout"、"No Transport"。dataFilter
回調選項在成功接收到響應數據後立即調用。它接收返回的數據和dataType
的值,並且必須返回(可能已更改的)數據以傳遞給success
。success
回調選項被調用,如果請求成功。它接收返回的數據、包含成功代碼的字符串和jqXHR
對象。-
承諾回調—
.done()
,.fail()
,.always()
, 和.then()
— 被調用,按照它們注冊的順序。 complete
回調選項在請求完成時觸發,無論是失敗還是成功。它接收jqXHR
對象,以及包含成功或錯誤代碼的字符串。
數據類型
對$.ajax()
調用的不同類型的響應在傳遞給成功處理程序之前會經過不同類型的預處理。默認情況下,預處理的類型取決於響應的Content-Type,但可以使用dataType
選項顯式設置。如果提供了dataType
選項,則響應的Content-Type 標頭將被忽略。
可用的數據類型是 text
、 html
、 xml
、 json
、 jsonp
和 script
。
如果指定了text
或html
,則不進行預處理。數據隻是傳遞給成功處理程序,並通過jqXHR
對象的responseText
屬性提供。
如果指定了 xml
,則在將響應作為
傳遞給成功處理程序之前,使用 XMLDocument
解析響應。 XML 文檔通過jQuery.parseXML
jqXHR
對象的responseXML
屬性可用。
如果指定了json
,則使用
解析響應,然後將其作為對象傳遞給成功處理程序。已解析的 JSON 對象可通過 jQuery.parseJSON
jqXHR
對象的 responseJSON
屬性獲得。
如果指定了script
,則$.ajax()
將執行從服務器接收到的JavaScript,然後將其作為字符串傳遞給成功處理程序。
如果指定了jsonp
,$.ajax()
將自動將查詢字符串參數(默認情況下)callback=?
附加到 URL。傳遞給$.ajax()
的設置的jsonp
和jsonpCallback
屬性可用於分別指定查詢字符串參數的名稱和JSONP 回調函數的名稱。服務器應返回將 JSON 響應傳遞給回調函數的有效 JavaScript。 $.ajax()
將執行返回的 JavaScript,調用 JSONP 回調函數,然後將響應中包含的 JSON 對象傳遞給 $.ajax()
成功處理程序。
有關 JSONP 的更多信息,請參閱 original post detailing its use 。
向服務器發送數據
默認情況下,Ajax 請求使用 GET HTTP 方法發送。如果需要 POST 方法,可以通過設置 type
選項的值來指定該方法。此選項會影響 data
選項的內容如何發送到服務器。根據 W3C XMLHTTPRequest 標準,POST 數據將始終使用 UTF-8 字符集傳輸到服務器。
data
選項可以包含形式為 key1=value1&key2=value2
的查詢字符串或形式為 {key1: 'value1', key2: 'value2'}
的對象。如果使用後一種形式,則數據在發送前使用jQuery.param()
轉換為查詢字符串。可以通過將 processData
設置為 false
來規避此處理。如果您希望將 XML 對象發送到服務器,則該處理可能是不可取的;在這種情況下,將 contentType
選項從 application/x-www-form-urlencoded
更改為更合適的 MIME 類型。
高級選項
global
選項可防止使用 .ajaxSend()
、 .ajaxError()
和類似方法注冊的處理程序在此請求觸發它們時觸發。例如,如果請求頻繁且簡短,這對於抑製使用 .ajaxSend()
實現的加載指示器很有用。對於 cross-domain 腳本和 JSONP 請求,全局選項會自動設置為 false
。有關詳細信息,請參閱下麵對這些方法的說明。
如果服務器在提供響應之前執行 HTTP 身份驗證,則可以通過 username
和 password
選項發送用戶名和密碼對。
Ajax 請求是time-limited,因此可以捕獲和處理錯誤以提供更好的用戶體驗。請求超時通常或者保留默認值,或者使用 $.ajaxSetup()
設置為全局默認值,而不是使用 timeout
選項覆蓋特定請求。
默認情況下,總是發出請求,但瀏覽器可能會從其緩存中提供結果。要禁止使用緩存結果,請將 cache
設置為 false
。如果自上次請求以來未修改資產,要導致請求報告失敗,請將 ifModified
設置為 true
。
scriptCharset
允許為使用 <script>
標記(即 script
或 jsonp
的類型)的請求顯式指定字符集。如果腳本和主機頁掩碼有不同的字符集,這將很有用。
Ajax 中的第一個字母代表"asynchronous,",意思是操作並行發生,不保證完成的順序。 $.ajax()
的 async
選項默認為 true
,表示在發出請求後可以繼續執行代碼。強烈建議不要將此選項設置為false
(從而使調用不再異步),因為它可能導致瀏覽器無響應。
$.ajax()
函數返回它創建的XMLHttpRequest
對象。通常 jQuery 在內部處理該對象的創建,但可以使用 xhr
選項指定用於製造對象的自定義函數。返回的對象通常可以被丟棄,但確實提供了一個lower-level 接口用於觀察和操作請求。特別是,在對象上調用.abort()
將在請求完成之前停止請求。
擴展 Ajax
從 jQuery 1.5 開始, jQuery 的 Ajax 實現包括jQuery.ajaxPrefilter(),jQuery.ajaxTransport(),以及允許您以極大的靈活性擴展 Ajax 的轉換器。
使用轉換器
$.ajax()
轉換器支持將數據類型映射到其他數據類型。但是,如果要將自定義數據類型映射到已知類型(例如 json
),則必須使用 contents
選項在響應 Content-Type 和實際數據類型之間添加對應關係:
|
這個額外的對象是必要的,因為響應Content-Types 和數據類型從來沒有嚴格的一一對應關係(因此是正則表達式)。
要從支持的類型(例如 text
、 json
)轉換為自定義數據類型並再次轉換返回,請使用另一個 pass-through 轉換器:
|
以上現在允許從 text
傳遞到 mycustomtype
然後 mycustomtype
到 json
。
其他注意事項:
- 由於瀏覽器安全限製,大多數 "Ajax" 請求都受製於 same origin policy ;請求無法從不同的域、子域、端口或協議成功檢索數據。
- 腳本和 JSONP 請求不受同源策略限製。
例子:
將一些數據保存到服務器並在完成後通知用戶。
|
檢索 HTML 頁麵的最新版本。
|
將 xml 文檔作為數據發送到服務器。通過將 processData 選項設置為 false
,可以防止數據自動轉換為字符串。
|
將 id 作為數據發送到服務器,將一些數據保存到服務器,並在完成後通知用戶。如果請求失敗,提醒用戶。
|
加載並執行一個 JavaScript 文件。
|
相關用法
- JQuery jQuery.ajaxSetup()用法及代碼示例
- JQuery jQuery.ajaxPrefilter()用法及代碼示例
- JQuery jQuery.ajaxTransport()用法及代碼示例
- JQuery jQuery.inArray()用法及代碼示例
- JQuery jQuery.when()用法及代碼示例
- JQuery Mobile jQuery.mobile.path.get()用法及代碼示例
- JQuery jQuery.grep()用法及代碼示例
- JQuery Mobile jQuery.mobile.navigate()用法及代碼示例
- JQuery Mobile jQuery.mobile.path.isRelativeUrl()用法及代碼示例
- JQuery jQuery.dequeue()用法及代碼示例
- JQuery jQuery.escapeSelector()用法及代碼示例
- JQuery Mobile jQuery.mobile.silentScroll()用法及代碼示例
- JQuery jQuery.cssNumber用法及代碼示例
- JQuery jQuery.map()用法及代碼示例
- JQuery jQuery.readyException()用法及代碼示例
- JQuery jQuery.parseJSON()用法及代碼示例
- JQuery jQuery.contains()用法及代碼示例
- JQuery Mobile jQuery.mobile.path.makePathAbsolute()用法及代碼示例
- JQuery jQuery.each()用法及代碼示例
- JQuery jQuery.unique()用法及代碼示例
- JQuery jQuery.getJSON()用法及代碼示例
- JQuery jQuery.proxy()用法及代碼示例
- JQuery jQuery.type()用法及代碼示例
- JQuery jQuery.cssHooks用法及代碼示例
- JQuery UI jQuery.effects.define()用法及代碼示例
注:本文由純淨天空篩選整理自jquery.com大神的英文原創作品 jQuery.ajax()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。