jquery ajax 之 jqXHR 和 Data Types詳解

jQuery 發(fā)送的所有 Ajax 請(qǐng)求,內(nèi)部都會(huì)通過(guò)調(diào)用 $.ajax()
函數(shù)來(lái)實(shí)現(xiàn)。通常沒(méi)有必要直接調(diào)用這個(gè)函數(shù),可以使用幾個(gè)已經(jīng)封裝的簡(jiǎn)便方法,如$.get()和.post()。如果你需要用到那些不常見(jiàn)的選項(xiàng),那么, $.ajax()使用起來(lái)更靈活。
注意: 可以通過(guò)$.ajaxSetup()函數(shù)來(lái)全局設(shè)置默認(rèn)選項(xiàng)

jqXHR 對(duì)象

從jQuery 1.5開(kāi)始,$.ajax() 返回jqXHR對(duì)象,該對(duì)象是瀏覽器原生的XMLHttpRequest對(duì)象的一個(gè)超集。例如,它包含responseText和responseXML屬性,以及一個(gè)getResponseHeader()方法。當(dāng)傳輸機(jī)制不是XMLHttpRequest時(shí)(例如,一個(gè)JSONP請(qǐng)求腳本,返回一個(gè)腳本標(biāo)簽時(shí)),jqXHR對(duì)象盡可能的模擬原生的XHR功能。

jqXHR對(duì)象 實(shí)現(xiàn)了 Promise 接口, 使它擁有了 Promise 的所有屬性,方法和行為。

  • jqXHR.done(function(data, textStatus, jqXHR) {});
  • jqXHR.fail(function(jqXHR, textStatus, errorThrown) {});
  • jqXHR.always(function(data|jqXHR, textStatus, jqXHR|errorThrown) { });
  • jqXHR.then(function(data, textStatus, jqXHR) {}, function(jqXHR, textStatus, errorThrown) {});

this在所有的回調(diào)中的引用,由這個(gè)對(duì)象在傳遞給$.ajax的context參數(shù)設(shè)置;如果沒(méi)有指定context參數(shù),this 引用的是Ajax settings本身。

為了向后兼容XMLHttpRequest ,一jqXHR對(duì)象將公開(kāi)下列屬性和方法:

  • readyState
  • status
  • statusText
  • responseXML and/or responseText 當(dāng)?shù)讓拥恼?qǐng)求分別作出XML和/或文本響應(yīng)
  • setRequestHeader(name, value) 從標(biāo)準(zhǔn)出發(fā),通過(guò)替換舊的值為新的值,而不是替換的新值到舊值
  • getAllResponseHeaders()
  • getResponseHeader()
  • abort()
    假如沒(méi)有onreadystatechange屬性,因?yàn)椴煌臓顟B(tài)可以分別在 success , error , complete和statusCode 方法中進(jìn)行處理。

Data Types

可用的data types 包括 text, html, xml, json, jsonp, and script。

  • text 和 html類型返回的數(shù)據(jù)不會(huì)經(jīng)過(guò)處理。這些數(shù)據(jù)僅僅是簡(jiǎn)單的傳遞給成功回調(diào)函數(shù),并通過(guò)jqXHR對(duì)象的responseText獲得。
  • xml類型在傳遞給成功回調(diào)函數(shù)前通過(guò)jQuery.parseXML解析成XMLDocument,并通過(guò)
    jqXHR對(duì)象的responseXML獲得。
  • json類型在傳遞給成功回調(diào)函數(shù)前通過(guò)jQuery.parseJSON 解析成JSON對(duì)象,并通過(guò)
    jqXHR對(duì)象的responseJSON 獲得。
  • script 類型在傳遞給成功回調(diào)函數(shù)前將執(zhí)行從服務(wù)器接收到的JavaScript并作為一個(gè)字符串傳遞給成功回調(diào)函數(shù)
  • jsonp類型會(huì)自動(dòng)給請(qǐng)求的URL后面創(chuàng)建一個(gè)查詢字符串參數(shù) callback=? 。服務(wù)器端應(yīng)當(dāng)在JSON數(shù)據(jù)前加上回調(diào)函數(shù)名,以便完成一個(gè)有效的JSONP請(qǐng)求。$.ajax()將會(huì)執(zhí)行返回的JavaScript,調(diào)用JSONP回調(diào)函數(shù),在JSON 對(duì)象傳遞給成功回調(diào)函數(shù)前。

注意:Script和JSONP形式請(qǐng)求不受同源策略的限制。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • AJAX 原生js操作ajax 1.創(chuàng)建XMLHttpRequest對(duì)象 var xhr = new XMLHtt...
    碧玉含香閱讀 3,264評(píng)論 0 7
  • 每日箴言: 每個(gè)人都有選擇的權(quán)利,你不選擇我,說(shuō)明你選擇了比我更重要的東西。[http://requirejs.o...
    全棧弄潮兒閱讀 2,962評(píng)論 2 85
  • Ajax 模塊也是經(jīng)常會(huì)用到的模塊,Ajax 模塊中包含了 jsonp 的現(xiàn)實(shí),和 XMLHttpRequest ...
    對(duì)角另一面閱讀 615評(píng)論 0 1
  • 昨天在一個(gè)超鏈接處添加了一個(gè)事件,希望在跳轉(zhuǎn)之前向后臺(tái)發(fā)送一個(gè)請(qǐng)求,結(jié)果在$.post的回調(diào)函數(shù)中添加的e.pre...
    JasonQiao閱讀 718評(píng)論 0 5
  • 第一章 入門 基本功能:訪問(wèn)和操作 dom 元素,控制頁(yè)面樣式,對(duì)頁(yè)面的事件處理,與ajax完美結(jié)合,有豐富的插件...
    X_Arts閱讀 1,066評(píng)論 0 2