Jquery jqXHR对象的属性和方法
在 jQuery 1.4 之前(包括1.4),$.ajax() 方法返回的是瀏覽器原生的 XMLHttpRequest 對(duì)象。
?
從 jQuery 1.5 開(kāi)始,$.ajax() 方法返回 jQuery 自己的 XMLHttpRequest 對(duì)象(一般簡(jiǎn)稱(chēng)jqXHR)。之所以這樣做,是因?yàn)?jQuery 1.5 引入了延遲對(duì)象 jQuery.Deferred,以便于更好地處理和執(zhí)行回調(diào)函數(shù)。
?
你可以簡(jiǎn)單地理解為 jqXHR 對(duì)象是 jQuery 自己偽造的一個(gè) XMLHttpRequest 對(duì)象和 $.Deferred 對(duì)象的結(jié)合體。
?
jqXHR是瀏覽器原生 XMLHttpRequest 對(duì)象的超集。例如,它也包含 responseText 和 responseXML 屬性,以及 getResponseHeader() 方法。
當(dāng)傳輸機(jī)制與 XMLHttpRequest 對(duì)象不同時(shí)(例如,用一個(gè) <script> 標(biāo)簽來(lái)完成 JSONP 請(qǐng)求),jqXHR對(duì)象會(huì)盡可能地模擬本地 XMLHttpRequest 對(duì)象的功能。
?
從jQuery 1.5.1開(kāi)始,jqXHR對(duì)象也支持 overrideMimeType() 方法(它在 1.4.x 中也可用,但在 1.5 中被臨時(shí)移除)。overrideMimeType() 方法可用于 beforeSend() 的回調(diào)函數(shù)中,比如用來(lái)修改 Content-Type 響應(yīng)頭。
?
從jQuery 1.5開(kāi)始,$.ajax() 返回的 jqXHR 對(duì)象實(shí)現(xiàn)了 Promise 接口,包括其所有的屬性、方法和行為。因此,我們通過(guò) jqXHR 可以非常簡(jiǎn)單地為本次 $.ajax() 綁定 AJAX 請(qǐng)求對(duì)應(yīng)狀態(tài)執(zhí)行的回調(diào)函數(shù)。
我們通過(guò)解剖一個(gè)完整的 jqXHR 對(duì)象,來(lái)了解 jqXHR 對(duì)象的屬性和方法:
var jqXHR = {abort: function (statusText){// 取消請(qǐng)求,關(guān)閉連接 },always: function (){// 設(shè)置請(qǐng)求完成(無(wú)論成功或失敗)時(shí)需要執(zhí)行的一個(gè)或多個(gè)回調(diào)函數(shù) },complete: function (){// always()函數(shù)的別名,設(shè)置請(qǐng)求完成(無(wú)論成功或失敗)時(shí)需要執(zhí)行的一個(gè)或多個(gè)回調(diào)函數(shù) },done: function (){// 設(shè)置請(qǐng)求成功時(shí)需要執(zhí)行的一個(gè)或多個(gè)回調(diào)函數(shù) },error: function (){// fail()函數(shù)的別名,設(shè)置請(qǐng)求失敗時(shí)需要執(zhí)行的一個(gè)或多個(gè)回調(diào)函數(shù) },fail: function (){// 設(shè)置請(qǐng)求失敗時(shí)需要執(zhí)行的一個(gè)或多個(gè)回調(diào)函數(shù) },getAllResponseHeaders: function (){// 獲取響應(yīng)頭信息的原始字符串 },getResponseHeader: function (key){// 獲取響應(yīng)頭中指定名稱(chēng)的值 },overrideMimeType: function (type){// 重寫(xiě) Content-Type 響應(yīng)頭 },pipe: function (){// then() 函數(shù)的別名,分別設(shè)置請(qǐng)求成功、失敗、正在進(jìn)行時(shí)需要執(zhí)行的回調(diào)函數(shù) },progress: function (){// 設(shè)置 Deferred 對(duì)象生成進(jìn)度通知時(shí)需要執(zhí)行的回調(diào)函數(shù) },promise: function (obj){// 為指定對(duì)象追加 Promise 對(duì)象的成員,以充當(dāng) Promise 對(duì)象 },readyState: 4, // 請(qǐng)求的狀態(tài)responseText: "<!DOCTYPE html><html>......</html>", // 響應(yīng)的文本內(nèi)容setRequestHeader: function (name, value){// 設(shè)置請(qǐng)求頭 },state: function (){// 確定一個(gè) Deferred 對(duì)象的當(dāng)前狀態(tài),例如:"pending"、"resolved"、"rejected" },status: 200,statusCode: function (map){ // 設(shè)置響應(yīng)指定狀態(tài)碼需要執(zhí)行的回調(diào)函數(shù)// map形如:{ 301:function(){}, 404:function(){} } },statusText: "OK", // 狀態(tài)響應(yīng)頭中的描述文本success: function (){// done()函數(shù)的別名,設(shè)置請(qǐng)求成功時(shí)需要執(zhí)行的一個(gè)或多個(gè)回調(diào)函數(shù) } };?
前面已經(jīng)說(shuō)了,我們通過(guò) jqXHR 可以非常簡(jiǎn)單地為本次 $.ajax() 綁定 AJAX 請(qǐng)求對(duì)應(yīng)狀態(tài)執(zhí)行的回調(diào)函數(shù)。
而 $.ajax() 方法執(zhí)行完后會(huì)返回一個(gè) jqXHR 對(duì)象。因?yàn)?#xff0c;我們其實(shí)大可以不在?$.ajax() 方法的參數(shù)中指定回調(diào),轉(zhuǎn)而使用鏈?zhǔn)綄?xiě)法,通過(guò)?jqXHR 對(duì)象的各個(gè)方法來(lái)指定回調(diào)。
像 $.get(),$.post() 這一類(lèi)對(duì)?$.ajax() 進(jìn)行了再封裝的方法,方法本身的參數(shù)不支持設(shè)置 error 等回調(diào),那么我們就可以用上面所說(shuō)的方法來(lái)達(dá)到此目的。
//例1 $.ajax({url: '/some.js',type: 'get',dataType: 'script'
}).success(function () {//... }).error(function () {//... }) //例2 $.get('/some.js', function () {//... }, 'script').error(function () {//... })
?
轉(zhuǎn)載于:https://www.cnblogs.com/czf-zone/p/4375323.html
總結(jié)
以上是生活随笔為你收集整理的Jquery jqXHR对象的属性和方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Wdcp在安装memcached出现错误
- 下一篇: 百家姓中有没有姓凯和姓琵和姓赞和姓妮的有