日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

原生js XMLhttprequest請求onreadystatechange執行兩次的解決

瀏覽:45日期:2022-06-01 18:54:38
目錄
  • 原生js XMLhttprequest請求onreadychange執行兩次
  • 關于readyState不同狀態總結
    • (0) 未初始化
    • (1) 載入
    • (2) 載入完成
    • (3) 交互
    • (4) 完成
  • 總結

    原生js XMLhttprequest請求onreadychange執行兩次

    最近做到一個頁面需要兼容IE,然后就寫了一個原生 XMLhttprequest請求

    直接上錯誤代碼

    xmlHttp = new XMLHttpRequest();
    ? ? ? ? xmlHttp.open("post","https://baidu.com/mianxiang/baidu/biancheng");
    ? ? ? ? xmlHttp.setRequestHeader("Content-Type","application/json");
    ? ? ? ? xmlHttp.send(XXXXXXXXXX) ;
    ? ? ? ? xmlHttp.onreadystatechange = function () {
    ? ? ? ? ? ? if(this.status==200){
    ? ? ? ? ? ? ? ? console.log("responseText",this.responseText);
    ? ? ? ? ? ? }
    ? ? ? ? };

    在上面代碼中,當status == 200 的console.log內容每次請求,都會在控制臺打印兩次,也就是說里面的邏輯會被執行兩次,百度了很多都沒有發現相似問題,和具體解決辦法。

    xmlHttp = new XMLHttpRequest();
    ? ? ? ? xmlHttp.open("post","https://baidu.com/mianxiang/baidu/biancheng");
    ? ? ? ? xmlHttp.setRequestHeader("Content-Type","application/json");
    ? ? ? ? xmlHttp.send(XXXXXXXXXX) ;
    ? ? ? ? xmlHttp.onreadystatechange = function () {
    ? ? ? ? ? ? if(xmlHttp.readyState == 4 && this.status==200){
    ? ? ? ? ? ? ? ? console.log("responseText",this.responseText);
    ? ? ? ? ? ? }
    ? ? ? ? };

    最后偶然發現了和正確代碼的差距,補上“ xmlHttp.readyState == 4 ”

    執行一次,問題解決。

    分析,可能是因為在沒有添加判斷readyState時,當options預請求執行時,也會有一次狀態碼200的,所以會被執行兩次,但是疑惑點是預請求不會返回數據,但是在打印時,兩次打印都是有數據的。

    查資料+請教大佬 = get 知識

    知識:

    • 創建xmlhttprequest對象之后沒有調用open之前readystate值為0,調用open()之后就變為1了,并且此時onreadystatechange函數與open()幾乎是同時執行的。
    • 在之后調用send方法之后,在startHttpRequest函數中readystate值仍為1,而調用send方法之后應該有2,3,4三個狀態,而只有在startHttpRequest函數用alert語句才可以觀察到3個值!
    • 這是為什么呢?這是因為在startHttpRequest函數中當解析到send這一句時,并沒有真正開始執行send執行。
    • 只有send執行,才可以在onreadystatechange函數觀察到狀態值的變化。
    • readystate不是發送的狀態,它是準備發送的狀態,要把它想像成“人間大炮一級準備、二級準備、放”這樣的口號,不是請求發送本身。
    • 同時xmlhttp也不是監聽服務器信息,它是在send的時候獲取服務器返回的狀態信息而已,只有一次,監聽則是一直在觀察狀態。

    關于readyState不同狀態總結

    (0) 未初始化

    此階段確認XMLHttpRequest對象是否創建,并為調用open()方法進行未初始化作好準備。

    值為0表示對象已經存在,否則瀏覽器會報錯--對象不存在。

    (1) 載入

    此階段對XMLHttpRequest對象進行初始化,即調用open()方法,根據參數(method,url,true)完成對象狀態的設置。

    并調用send()方法開始向服務端發送請求。值為1表示正在向服務端發送請求。

    (2) 載入完成

    此階段接收服務器端的響應數據。但獲得的還只是服務端響應的原始數據,并不能直接在客戶端使用。

    值為2表示已經接收完全部響應數據。并為下一階段對數據解析作好準備。

    (3) 交互

    此階段解析接收到的服務器端響應數據。

    即根據服務器端響應頭部返回的MIME類型把數據轉換成能通過responseBody、responseText或responseXML屬性存取的格式,為在客戶端調用作好準備。

    狀態3表示正在解析數據。

    (4) 完成

    此階段確認全部數據都已經解析為客戶端可用的格式,解析已經完成。

    值為4表示數據解析完畢,可以通過XMLHttpRequest對象的相應屬性取得數據。

    這個時候再回顧之前為何執行兩次onreadystatechange, 因為當state每次變化的時候都會執行到onreadystatechange,其實是readyState每次變化都會有執行onreadystatechange,因為我判斷了this.status == 200 ,所以當服務器響應了之后返回了200的狀態碼,才會執行console.log(),才有上面的執行兩次的問題。

    至此問題解決!!!

    總結

    以上為個人經驗,希望能給大家一個參考,也希望大家多多支持。

    標簽: JavaScript
    日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
    亚洲精品影院在线观看| 亚洲高清久久| 免费视频一区三区| 欧美一级精品| 久久久久久一区二区| 国产精品115| 欧美日一区二区三区在线观看国产免 | 亚洲专区一区| 亚洲国产一区二区在线观看 | 伊人www22综合色| 91高清一区| 国产激情综合| 日本aⅴ亚洲精品中文乱码| 麻豆91精品| 日韩专区欧美专区| 国产亚洲在线观看| 黄色亚洲在线| 久久中文字幕av一区二区不卡| 精品一区二区三区在线观看视频 | 久久久久一区| 国产一区二区三区国产精品| 国产精品调教视频| 91精品啪在线观看国产爱臀| 亚洲精品乱码日韩| 综合视频一区| 亚洲自拍另类| 亚洲精华国产欧美| 欧美不卡高清一区二区三区| 狠狠躁少妇一区二区三区| 国产999精品在线观看| 日本欧美国产| 色天使综合视频| 久久精品国产68国产精品亚洲| 久久精品欧美一区| 久久人人精品| 亚洲调教视频在线观看| 在线亚洲激情| 亚洲精品美女| 91免费精品国偷自产在线在线| 国产亚洲高清在线观看| 美女久久99| 大香伊人久久精品一区二区| 精品三区视频| 色婷婷色综合| 国内精品99| 免费在线观看一区二区三区| 日韩欧美中文字幕一区二区三区 | 欧美日韩国产精品一区二区亚洲| 香蕉精品999视频一区二区| 亚洲永久精品唐人导航网址| 欧美日韩亚洲国产精品| 精品亚洲免a| 亚洲综合电影| 欧美中文字幕一区二区| 亚洲一区国产| 一区二区国产精品| 国产欧美日韩精品一区二区三区| 久久久久九九精品影院| 三上悠亚国产精品一区二区三区| 亚洲精品电影| 日本成人在线不卡视频| 国产精久久一区二区| 亚洲va中文在线播放免费| 欧美在线综合| 国产精品午夜一区二区三区| 深夜福利视频一区二区| 99国产精品99久久久久久粉嫩| 一本综合精品| 精品一区视频| 国产一区欧美| 91一区二区三区四区| 中文在线а√天堂| 在线亚洲激情| 欧美1区2区3| 久久亚洲在线| 91国内精品| 久久久人人人| 日韩精品亚洲专区| 91亚洲人成网污www| 久久国产福利| 久久中文精品| 亚洲欧美日韩专区| 国产精品igao视频网网址不卡日韩 | 亚洲伊人精品酒店| 国产精品久久亚洲不卡| 久久婷婷激情| 亚洲乱码久久| 日韩中文字幕高清在线观看| 丝袜美腿亚洲一区| 欧美激情aⅴ一区二区三区 | 精品久久久亚洲| 在线手机中文字幕| 亚洲精品综合| 日韩免费视频| 三级久久三级久久久| 中文av在线全新| 日韩精品一区第一页| 久久久久久久欧美精品| 视频在线在亚洲| 精品久久在线| 中文字幕免费一区二区| 久久不见久久见国语| 国产手机视频一区二区 | 日韩精品一二三| 丁香六月综合| 国产精品主播| 免费视频最近日韩| 成人美女视频| 国产高清亚洲| 欧美va天堂在线| 中文av在线全新| 午夜在线一区二区| av资源新版天堂在线| 国产精品欧美在线观看| 成人久久一区| 日本亚洲欧洲无免费码在线| 久久精品导航| 黄色网一区二区| 久久精品资源| 久久精品xxxxx| 久久精品99国产精品日本| 午夜在线播放视频欧美| 欧美+亚洲+精品+三区| 91日韩免费| 成人亚洲一区| 国产精品66| 日韩激情av在线| 老鸭窝亚洲一区二区三区| 久久香蕉国产| bbw在线视频| 麻豆91精品91久久久的内涵| 日韩三级久久| 综合激情网站| 亚洲综合日韩| 亚洲综合电影一区二区三区| 国户精品久久久久久久久久久不卡| 福利一区二区免费视频| 国产美女亚洲精品7777| 日本久久一区| 男人的天堂久久精品| 日韩亚洲精品在线| 精品1区2区3区4区| 欧美日韩国产亚洲一区| 亚洲一级影院| 亚洲黄色免费av| 国产suv精品一区二区四区视频| 欧美精品1区| 久久国产免费看| 91麻豆精品| 欧美色综合网| 国产剧情在线观看一区| 欧美日韩夜夜| 欧美日韩亚洲国产精品| 欧美一区影院| 欧美日韩一区二区三区不卡视频| 亚洲精品在线a| 日韩精品电影一区亚洲| 日韩1区2区日韩1区2区| 青青伊人久久| 国产亚洲第一伦理第一区| 天堂va在线高清一区| 日韩一区二区三区精品视频第3页 日韩一区二区三区免费视频 | 黄色成人精品网站| 欧美精品黄色| 美女日韩在线中文字幕| 免费精品视频最新在线| 亚州精品视频| 欧美亚洲网站| 久久精品国产网站| 午夜影院一区| 精品国产欧美日韩| 日韩大片在线| 国产一区日韩欧美| 鲁大师成人一区二区三区 | 国产欧美日韩一级| 久久精品欧洲| 91看片一区| 91一区二区| 免费精品国产的网站免费观看| 99riav国产精品| 亚久久调教视频| 欧美亚洲免费| 色综合五月天| 黄色成人91| 蜜臀va亚洲va欧美va天堂| 日韩三区四区| 九九99久久精品在免费线bt| 久久精品91| 中文字幕一区二区三区在线视频| 欧美一级一区| 91视频一区| jiujiure精品视频播放| 免费观看在线综合色| 国产一级成人av| 偷拍精品精品一区二区三区| 伊人国产精品| 麻豆一区二区三| 欧美综合二区| 黄在线观看免费网站ktv| 免费久久精品视频|