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