中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

jQuery中$.ajax()提供的回調(diào)鉤子是什么

這篇文章主要介紹了jQuery中$.ajax()提供的回調(diào)鉤子是什么,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)是專業(yè)的甘南網(wǎng)站建設公司,甘南接單;提供成都網(wǎng)站設計、網(wǎng)站建設、外貿(mào)網(wǎng)站建設,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行甘南網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

Callback Function Queues(回調(diào)函數(shù))

beforeSend, error, dataFilter, success 和 complete接受的回調(diào)函數(shù)是在合適的時間調(diào)用。

從jQuery 1.5開始, fail , done ,和從jQuery 1.6開始的always回調(diào)鉤子(hooks)采用先入先出隊列管理。這意味著你可以為每個掛鉤分配多個回調(diào)。見Deferred object methods ,這是實現(xiàn)內(nèi)部的$.ajax()回調(diào)鉤子(hooks)。

這里有$.ajax()提供的回調(diào)鉤子 (hooks),如下:

beforeSend 在發(fā)送請求之前調(diào)用,它接收jqXHR對象和settings作為參數(shù)對象。

error 在請求出錯時調(diào)用。如果請求失敗,在它們的順序依次登記。他們接受jqXHR ,字符串表示的錯誤類型,以及異常對象(如果有的話)。一些內(nèi)置的錯誤會將 "abort", "timeout", "No Transport" 等字符串作為異常對象。

dataFilter 在請求成功之后調(diào)用。傳入返回的數(shù)據(jù)以及dataType參數(shù)的值。并且必須返回新的數(shù)據(jù)(可能是處理過的)傳遞給success回調(diào)函數(shù)。

success 當請求成功并接收到返回數(shù)據(jù)之后調(diào)用。傳入返回后的數(shù)據(jù),以及包含成功代碼的字符串和jqXHR對象。

complete 請求完成時,無論是在失敗或成功,它們按順序依次執(zhí)行回調(diào)。他們收到jqXHR對象,以及一個包含成功或錯誤代碼。

Data Types(數(shù)據(jù)類型)

$.ajax()函數(shù)依賴服務器提供的信息來處理返回的數(shù)據(jù)。如果服務器報告說返回的數(shù)據(jù)是XML,那么返回的結果就可以用普通的XML方法或者jQuery的選擇器來遍歷。如果見得到其他類型,比如HTML,則數(shù)據(jù)就以文本形式來對待。

通過dataType選項還可以指定其他不同數(shù)據(jù)處理方式。除了單純的xml,dataType還可以指定 html, json, jsonp, script, 或者 text。

其中,text 和 xml類型返回的數(shù)據(jù)不會經(jīng)過處理。無論是通過jqXHR對象的responseText或responseXML,這些數(shù)據(jù)僅僅是傳遞給處理程序的成功

注意:我們必須確保網(wǎng)頁服務器報告的MIME類型與我們選擇的 dataType. 所匹配。比如說,XML的話,服務器端就必須聲明 text/xml 或者 application/xml 來獲得一致的結果。

如果指定為 html類型,任何內(nèi)嵌的JavaScript都會在HTML作為一個字符串返回之前執(zhí)行。類似的,指定script類型的話,也會先執(zhí)行服務器端生成JavaScript,然后再把腳本作為一個文本數(shù)據(jù)返回。

如果指定為json類型,則會把獲取到的數(shù)據(jù)作為一個JavaScript對象來解析,并且把構建好的對象作為結果返回。為了實現(xiàn)這個目的,他首先嘗試使用jQuery.parseJSON()。如果瀏覽器不支持,則使用一個Function來constructor?;蔚腏SON數(shù)據(jù)將拋出一個解析錯誤(查看json.org了解更多信息)。JSON數(shù)據(jù)是一種能很方便通過JavaScript解析的結構化數(shù)據(jù)。如果獲取的數(shù)據(jù)文件存放在遠程服務器上(域名不同,也就是跨域獲取數(shù)據(jù)),則需要使用jsonp類型代替。

jsonp類型會給請求的URL后面創(chuàng)建一個查詢字符串參數(shù) callback=? 。服務器端應當在JSON數(shù)據(jù)前加上回調(diào)函數(shù)名,以便完成一個有效的JSONP請求。如果要指定回調(diào)函數(shù)的參數(shù)名來取代默認的callback,可以通過設置$.ajax()的jsonp參數(shù)。

注意:JSONP是JSON格式的擴展。他要求一些服務器端的代碼來檢測并處理查詢字符串參數(shù)。更多信息可以參閱詳細介紹了其使用的原帖.

當數(shù)據(jù)被從遠程服務器取回(這是唯一可能使用script 或者 jsonp數(shù)據(jù)類型),error回調(diào)和全局事件將永遠不會被觸發(fā)。

注:如果指定了script或者jsonp類型,那么當從服務器接收到數(shù)據(jù)時,實際上是用了<script>標簽而不是XMLHttpRequest對象。這種情況下,$.ajax()不再返回一個XMLHttpRequest對象,并且也不會傳遞事件處理函數(shù),比如beforeSend。

Sending Data to the Server(發(fā)送數(shù)據(jù)到服務器)

默認情況下,Ajax請求使用GET方法。如果要使用POST方法,可以設定type參數(shù)值。這個選項也會影響 data 選項中的內(nèi)容如何發(fā)送到服務器。POST數(shù)據(jù)將被發(fā)送到服務器使用UTF-8字符集,根據(jù)W3C XMLHttpRequest的標準。

data選項既可以包含一個查詢字符串,比如 key1=value1&key2=value2,也可以是一個映射,比如 {key1: 'value1', key2: 'value2'} 。如果使用了后者的形式,則數(shù)據(jù)再發(fā)送前會用jQuery.param() 將其轉換成查詢字符串。這個處理過程也可以通過設置processData選項為false來回避。如果我們希望發(fā)送一個XML對象給服務器時,這種處理可能并不合適。并且在這種情況下,我們也應當改變contentType 選項的值,用其他合適的MIME類型來取代默認的  application/x-www-form-urlencoded 。

Advanced Options(高級選項)

global選項用于阻止響應注冊的回調(diào)函數(shù),比如.ajaxSend(), .ajaxError(),以及類似的方法。這在有些時候很有用,比如發(fā)送的請求非常頻繁且簡短的時候,就可以在.ajaxSend()里禁用這個??缬蚰_本和JSONP請求,全局選項自動設置為false。更多關于這些方法的詳細信息,請參閱下面的內(nèi)容。

如果服務器需要HTTP認證,可以使用用戶名和密碼可以通過 username 和 password 選項來設置。

Ajax請求是限時的,所以錯誤警告被捕獲并處理后,可以用來提升用戶體驗。請求超時這個參數(shù)通常就保留其默認值,要不就通過$.ajaxSetup()來全局設定,很少為特定的請求重新設置timeout選項。

默認情況下,請求總會被發(fā)出去,但瀏覽器有可能從他的緩存中調(diào)取數(shù)據(jù)。要禁止使用緩存的結果,可以設置cache參數(shù)為false。如果希望判斷數(shù)據(jù)自從上次請求后沒有更改過就報告出錯的話,可以設置ifModified為true。

scriptCharset允許給<script>標簽的請求設定一個特定的字符集,用于script 或者 jsonp類似的數(shù)據(jù)。當腳本和頁面字符集不同時,這特別好用。

Ajax的第一個字母是“asynchronous”的開頭字母,這意味著所有的操作都是并行的,完成的順序沒有前后關系。$.ajax()的async參數(shù)總是設置成true,這標志著在請求開始后,其他代碼依然能夠執(zhí)行。強烈不建議把這個選項設置成false,這意味著所有的請求都不再是異步的了,這也會導致瀏覽器被鎖死。

$.ajax()函數(shù)返回他創(chuàng)建的XMLHttpRequest對象。通常jQuery只在內(nèi)部處理并創(chuàng)建這個對象,但用戶也可以通過xhr 選項來傳遞一個自己創(chuàng)建的xhr對象。返回的對象通常已經(jīng)被丟棄了,但依然提供一個底層接口來觀察和操控請求。比如說,調(diào)用對象上的.abort() 可以在請求完成前掛起請求。

目前, 在Firefox中有一個bug,雖然.getResponseHeader('Content-Type')返回一個非空的字符串,但是 .getAllResponseHeaders()還是返回空字符串, 在Firefox中使用jQuery不支持自動解碼JSON CORS 響應。

重寫jQuery.ajaxSettings.xhr 的一種解決方案,如下

(function () {

var _super = jQuery.ajaxSettings.xhr,

xhrCorsHeaders = [ "Cache-Control", "Content-Language", "Content-Type", "Expires", "Last-Modified", "Pragma" ];

jQuery.ajaxSettings.xhr = function () {

var xhr = _super(),

getAllResponseHeaders = xhr.getAllResponseHeaders;

xhr.getAllResponseHeaders = function () {

var allHeaders = "";

try {

allHeaders = getAllResponseHeaders.apply( xhr );

if ( allHeaders ) {

return allHeaders;

}

} catch ( e ) {

}

$.each( xhrCorsHeaders, function ( i, headerName ) {

if ( xhr.getResponseHeader( headerName ) ) {

allHeaders += headerName + ": " + xhr.getResponseHeader( headerName ) + "\n";

}

});

return allHeaders;

};

return xhr;

};

})();

感謝你能夠認真閱讀完這篇文章,希望小編分享的“jQuery中$.ajax()提供的回調(diào)鉤子是什么”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關知識等著你來學習!

網(wǎng)站欄目:jQuery中$.ajax()提供的回調(diào)鉤子是什么
本文網(wǎng)址:http://www.rwnh.cn/article42/pgsghc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站電子商務、網(wǎng)站設計公司微信小程序、網(wǎng)站導航虛擬主機

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設
乌鲁木齐市| 溧阳市| 北京市| 普兰县| 墨江| 林西县| 枝江市| 湖州市| 赤城县| 巴林右旗| 桃园县| 临湘市| 武陟县| 秀山| 库车县| 星子县| 汉川市| 古蔺县| 许昌县| 谷城县| 黄山市| 宣城市| 龙陵县| 南华县| 漯河市| 安乡县| 于田县| 东山县| 从江县| 静安区| 海盐县| 广水市| 恩平市| 会泽县| 辛集市| 海安县| 肃南| 汽车| 新化县| 双江| 安吉县|