欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > jQuery Ajax的readyState和status的區別和使用詳解

jQuery Ajax的readyState和status的區別和使用詳解

熱門標簽:東平縣地圖標注app 中國地圖標注不明確情況介紹表 地圖標注推銷坑人 立陶宛地圖標注 電銷機器人 長春 河間市地圖標注app 怎樣在地圖標注文字 大眾點評400電話怎么申請 上海企業外呼系統價錢

在前幾篇分析了jquery的ajax異步和同步,以及異常的一些處理,感覺還沒有把ajax的readyState和status說清楚.今天就來說說ajax狀態的那點事。

jquery ajax函數源代碼是這樣的:

var getXmlHttpRequest = function () {
  if (window.XMLHttpRequest) {
    //主流瀏覽器提供了XMLHttpRequest對象
    return new XMLHttpRequest();
  }
  else if (window.ActiveXObject) {
    //低版本的IE瀏覽器沒有提供XMLHttpRequest對象
    //所以必須使用IE瀏覽器的特定實現ActiveXObject
    return new ActiveXObject("Microsoft.XMLHTTP");
  }
};
var xhr = getXmlHttpRequest();
xhr.onreadystatechange = function () {
  if (xhr.readyState === 4  xhr.status === 200) {
    //獲取成功后執行操作
    //數據在xhr.responseText
  }
};
xhr.open("TYPE", "URL", true);
xhr.send("");

什么是readyState

  readyState是XMLHttpRequest對象的一個屬性,用來標識當前XMLHttpRequest對象處于什么狀態。

  readyState總共有5個狀態值,分別為0~4,每個值代表了不同的含義,如下表所示:

  0    未初始化狀態:此時,已經創建了一個XMLHttpRequest對象

  1  準備發送狀態:此時,已經調用了XMLHttpRequest對象的open方法,并且XMLHttpRequest對象已經準備好將一個請求發送到服務器端

  2  已經發送狀態:此時,已經通過send方法把一個請求發送到服務器端,但是還沒有收到一個響應

  3  正在接收狀態:此時,已經接收到HTTP響應頭部信息,但是消息體部分還沒有完全接收到

  4  完成響應狀態:此時,已經完成了HTTP響應的接收

什么是status

  status是XMLHttpRequest對象的一個屬性,表示響應的HTTP狀態碼。

  在HTTP1.1協議下,HTTP狀態碼總共可分為5大類,如下表所示:

  1XX    服務器收到請求,需要繼續處理。例如101狀態碼,表示服務器將通知客戶端使用更高版本的HTTP協議。

  2XX    請求成功。例如200狀態碼,表示請求所希望的響應頭或數據體將隨此響應返回。

  3XX    重定向。例如302狀態碼,表示臨時重定向,請求將包含一個新的URL地址,客戶端將對新的地址進行GET請求。

  4XX    客戶端錯誤。例如404狀態碼,表示客戶端請求的資源不存在。

  5XX    服務器錯誤。例如500狀態碼,表示服務器遇到了一個未曾預料的情況,導致了它無法完成響應,一般來說,這個問題會在程序代碼出錯時出現。

拋出問題

  為什么onreadystatechange的函數實現要同時判斷readyState和status呢?

  我們知道 readyState === 4 已經表示了請求響應成功了,為什么還要后續的status呢?帶著問題,我們開始來做一些試驗吧。

只使用readyState判斷

  javascript端的實現代碼如下:

var getXmlHttpRequest = function () {
  if (window.XMLHttpRequest) {
    return new XMLHttpRequest();
  }
  else if (window.ActiveXObject) {
    return new ActiveXObject("Microsoft.XMLHTTP");
  }
};
var xhr = getXmlHttpRequest();
xhr.onreadystatechange = function () {
  if (xhr.readyState === 4) {
    alert(xhr.responseText);
  }
};
xhr.open("GET", "/data.aspx", true);
xhr.send("");

我們在服務端拋出異常:

public partial class data : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
    throw new Exception("Error");
  }
}

運行javascript代碼,提示窗口出現了如下:

  服務響應出錯了,但還是返回了信息,這并不是我們想要的結果。打開Fiddler監控,可以看到data.aspx返回的是500響應,但由于只使用readystate做判斷,它不理會放回的結果是500還是200,只要響應成功返回了,就執行接下來的javascript代碼,結果將造成各種不可預料的錯誤。所以只使用readyState判斷是行不通的。

  換另外一個角度想,狀態碼返回200就表示這次響應是成功的了,那么是不是可以不使用readyState,單獨只使用status做判斷呢?好,帶著問題,繼續來做試驗吧。

只使用status判斷

  javascript端的代碼實現如下:

var getXmlHttpRequest = function () {
  if (window.XMLHttpRequest) {
    return new XMLHttpRequest();
  }
  else if (window.ActiveXObject) {
    return new ActiveXObject("Microsoft.XMLHTTP");
  }
};
var xhr = getXmlHttpRequest();
xhr.onreadystatechange = function () {
  if (xhr.status === 200) {
    alert("readyState=" + xhr.readyState + xhr.responseText);
  }
};
xhr.open("GET", "/data.aspx", true);
xhr.send("");

事實上,結果卻不像預期那樣。響應碼確實是返回了200,但是總共彈出了3次窗口!第一次是“readyState=2”的窗口,第二次是“readyState=3Test”的窗口,第三次是“readyState=4Test”的窗口。由此,可見onreadystatechange函數的執行不是只在readyState變為4的時候觸發的,而是readyState的每次變化都會觸發,所以就出現了前面說的那種情況。可見,單獨使用status判斷也是行不通的。

進一步思考

  由上面的試驗,我們可以知道判斷的時候readyState和status缺一不可。那么readyState和status的先后判斷順序會不會有影響呢?我們可以將status調到前面先判斷,代碼如 xhr.status === 200 xhr.readyState === 4。

  事實上,這對于最終的結果是沒有影響的,但是中間的性能就不同了。由上一個試驗我們知道,readyState的每次變化都會觸發onreadystatechange函數,假如先判斷status,那么每次都會多判斷一次status的狀態。雖然性能上影響甚微,不過我們還是應該抱著追求極致代碼的想法,把readyState的判斷放在前面。

以上所述是小編給大家介紹的jQuery Ajax的readyState和status的區別和使用詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

您可能感興趣的文章:
  • jQuery AJAX中readyState與status的區別與聯系
  • 探討Ajax中有關readyState(狀態值)和status(狀態碼)的問題

標簽:營口 益陽 銅川 四川 遼寧 內江 本溪 玉樹

巨人網絡通訊聲明:本文標題《jQuery Ajax的readyState和status的區別和使用詳解》,本文關鍵詞  jQuery,Ajax,的,readyState,和,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《jQuery Ajax的readyState和status的區別和使用詳解》相關的同類信息!
  • 本頁收集關于jQuery Ajax的readyState和status的區別和使用詳解的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    91精品国产综合久久福利软件| 色88888久久久久久影院野外 | 国产精品嫩草影院av蜜臀| 久久美女高清视频| 中文字幕人妻无码系列第三区| 国产精品影视在线观看| 成人国产免费视频| 成人啪啪18免费游戏链接| 一二三区视频在线观看| 亚洲成av人片在线观看无| 在线不卡av电影| 国产传媒免费在线观看| 欧美在线视频不卡| 精品国产精品网麻豆系列| 亚洲国产精品二十页| 亚洲激情自拍偷拍| 久久99久久99精品免视看婷婷 | 最新久久zyz资源站| 亚洲午夜精品网| 精品伊人久久久久7777人| av爱爱亚洲一区| 亚洲精品视频大全| 亚洲天堂网av在线| 在线成人av网站| 国产精品午夜在线观看| 日韩专区一卡二卡| 国产99精品在线观看| 99久久免费看精品国产一区| 亚洲女人久久久| 精品日产卡一卡二卡麻豆| 日韩美女视频19| 国产在线国偷精品产拍免费yy | 午夜久久电影网| 粉嫩aⅴ一区二区三区四区 | 欧美色综合网站| 久久综合色婷婷| 午夜欧美电影在线观看| 成a人片亚洲日本久久| 亚洲第一香蕉网| 欧美日韩一区二区电影| 椎名由奈av一区二区三区| 久久99精品久久久| 欧美深性狂猛ⅹxxx深喉| 欧洲一区在线电影| 亚洲欧美aⅴ...| 暴力调教一区二区三区| а天堂中文在线资源| 久久先锋影音av| 老汉av免费一区二区三区| 中文人妻一区二区三区| 欧美浪妇xxxx高跟鞋交| 亚洲乱码精品一二三四区日韩在线| 国产成人精品免费在线| 中文字幕五月天| 亚洲国产一区二区视频| 国产成人亚洲综合a∨婷婷图片| 免费看黄色aaaaaa 片| 日韩欧美一区在线| 精品一区二区三区影院在线午夜| 精品人妻无码一区二区三区换脸| 欧美精品一区二区久久婷婷| 国产一区在线观看视频| 永久久久久久久| 一区二区三区在线视频观看58 | 捆绑调教一区二区三区| 男女全黄做爰文章| 亚洲美女免费视频| 国产精品久久久久久久久图文区 | 亚洲国产一区二区三区| 人妻熟女aⅴ一区二区三区汇编| 欧美成人三级电影在线| 国产91精品久久久久久久网曝门| 在线视频亚洲一区| 亚洲一区二区三区影院| 尤物视频最新网址| 成人欧美一区二区三区黑人麻豆| 激情av中文字幕| 日韩女同互慰一区二区| 成人性生交大片免费看视频在线| 欧美色精品天天在线观看视频| 蜜桃视频在线一区| 色综合久久久久久久| 日韩av在线发布| 一本久久精品一区二区| 老司机精品视频线观看86| 色婷婷综合久久久| 韩国精品主播一区二区在线观看 | 日本a级片视频| 日本女人一区二区三区| 欧美亚洲综合久久| 国产精品99久久久久久久女警 | 欧美三级黄色大片| 五月综合激情婷婷六月色窝| 91插插插插插插| 久久国产麻豆精品| 欧美日本一区二区三区四区| 国产成人av福利| 亚洲av综合色区无码另类小说| 久久久亚洲国产美女国产盗摄 | 国产在线精品国自产拍免费| 日韩亚洲欧美在线观看| 日本xxxx免费| 亚洲乱码国产乱码精品精可以看| 9.1片黄在线观看| 午夜欧美在线一二页| 中文字幕亚洲欧美日韩| 激情综合色综合久久综合| 精品国产免费久久| 99re久久精品国产| 亚洲国产一二三| 欧美日韩和欧美的一区二区| 小日子的在线观看免费第8集| 亚洲免费资源在线播放| 日本道免费精品一区二区三区| 99久久综合国产精品| 国产精品蜜臀av| 色呦呦网站一区| 国产sm在线观看| 午夜亚洲国产au精品一区二区| 91精品国产综合久久福利软件| 亚洲天堂2024| 麻豆国产精品官网| 久久免费电影网| 色爱区综合激月婷婷| 日本女人性视频| 全国精品久久少妇| 国产日韩av一区二区| 91久久线看在观草草青青| 美女露出粉嫩尿囗让男人桶| 日韩激情视频网站| 久久久精品国产免大香伊| 色视频一区二区| 特大黑人巨人吊xxxx| 国产成人丝袜美腿| 亚洲综合在线第一页| 99久久婷婷国产综合精品电影 | 精品污污网站免费看| 精品人妻一区二区三区四区| 成人性生交大合| 麻豆精品视频在线观看免费| 国产精品国产自产拍在线| 欧美一三区三区四区免费在线看| 秋霞欧美一区二区三区视频免费 | 国产三级一区二区| 色诱视频网站一区| 欧美一级片黄色| 风间由美性色一区二区三区| 亚洲最色的网站| 久久久欧美精品sm网站| 欧美日韩国产在线播放网站| 久久久免费看片| 午夜av免费看| 99国产精品一区| 国产精品一区二区在线观看不卡| 亚洲自拍另类综合| 中文字幕在线不卡国产视频| 欧美成人午夜电影| 777久久久精品| 在线观看一区日韩| 国产精品丝袜一区二区| 亚洲色图日韩精品| 亚洲国产综合视频| 日本wwwwwww| 91在线观看成人| av成人免费在线观看| 国产凹凸在线观看一区二区| 免费成人av在线| 日韩激情中文字幕| 性做久久久久久免费观看| 一区二区三区中文字幕| 亚洲视频一区在线观看| 国产精品福利一区二区三区| 久久亚洲精精品中文字幕早川悠里| 欧美一区二区女人| 日韩视频一区在线观看| 欧美v亚洲v综合ⅴ国产v| 日韩欧美一级特黄在线播放| 欧美一级午夜免费电影| 精品一区二区日韩| 精品一区二区在线看| 国内精品久久久久影院薰衣草| 精品中文av资源站在线观看| 久久国产欧美日韩精品| 韩国三级在线一区| 国产精品自拍一区| 粉嫩嫩av羞羞动漫久久久| jvid福利写真一区二区三区| av亚洲精华国产精华精| 人妻激情偷乱频一区二区三区| 亚洲av人人澡人人爽人人夜夜| 久久亚洲AV成人无码国产野外 | 国产乱码一区二区三区| 成人在线综合网站| 天天躁日日躁狠狠躁av| 亚洲av片不卡无码久久| 欧美手机在线观看| 欧美午夜宅男影院| 精品国产电影一区二区| 亚洲欧美成人一区二区三区| 日韩电影在线观看一区|