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

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

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

瀏覽:48日期: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(),才有上面的執行兩次的問題。

    至此問題解決?。。?/p>

    總結

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

    標簽: JavaScript
    日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
    国产日产一区| 蜜桃精品在线| 色婷婷亚洲mv天堂mv在影片| 美美哒免费高清在线观看视频一区二区| 亚洲最新av| 99re国产精品| 久久久精品日韩| 91综合网人人| 国产成人在线中文字幕| 蜜臀久久99精品久久久久久9| 久久av国产紧身裤| 国产精选一区| 国产日韩欧美三级| 日韩av不卡在线观看| 亚洲精品护士| 日韩在线卡一卡二| 99久久99久久精品国产片果冰| 久久免费精品| 日本vs亚洲vs韩国一区三区二区| 久久国产福利| 综合在线一区| 欧美激情三区| 久久不射网站| 国产精品二区不卡| 精品国产欧美| 日韩中文一区二区| 亚洲精品欧美| 久久香蕉网站| 91一区二区三区四区| 成人免费电影网址| 黑丝一区二区| 91欧美极品| 日本一区二区高清不卡| 日韩av片子| 欧美日韩视频| 亚洲精品一级二级三级| 蜜桃视频一区二区三区在线观看| 日韩精品导航| 日韩精品网站| 日本成人一区二区| 先锋影音久久久| 欧美色综合网| 久久裸体视频| 日韩欧乱色一区二区三区在线| 国产精品一线天粉嫩av| 国产精品白丝av嫩草影院| 欧美日韩国产综合网| 欧美国产日本| 亚洲人成网77777色在线播放| 精品免费av一区二区三区| 久久最新视频| 亚洲精品在线影院| 国产欧美日韩一区二区三区四区| 香蕉成人av| 另类欧美日韩国产在线| 久久精品免费一区二区三区| 热久久久久久| 免费视频国产一区| 美女av一区| 国产精品毛片视频| 亚洲精品三级| 黄色国产精品| 99久久夜色精品国产亚洲1000部| 国产精品亚洲四区在线观看| 首页国产欧美久久| 美女精品在线| 日本精品久久| 97久久超碰| 视频在线观看国产精品| 精品视频在线你懂得| 免费观看不卡av| 国产不卡精品在线| 免费精品一区| 国产福利一区二区三区在线播放| 日本一区福利在线| 免费黄网站欧美| 国产亚洲在线| 在线视频观看日韩| 伊人久久视频| 亚洲成人av观看| 日韩高清中文字幕一区二区| 蜜臀精品久久久久久蜜臀| 日本 国产 欧美色综合| 亚洲一区二区三区高清| 9色国产精品| 久久久国产精品一区二区中文| 欧美www视频在线观看| 久久99精品久久久野外观看| 捆绑调教美女网站视频一区| 国产精久久一区二区| 激情综合五月| 久久精品国语| 亚洲婷婷丁香| 国产激情综合| 国产中文在线播放| 婷婷激情图片久久| 日本不卡视频在线观看| 欧美激情福利| 欧美色图国产精品| 亚洲资源网站| 欧美一级网址| 久久一区精品| 亚洲一级影院| 亚洲精品第一| 欧美激情福利| 久久精品免费一区二区三区| 亚洲精品影视| 日韩大片免费观看| 日韩中文字幕不卡| 国产精品原创| 蜜桃成人av| 91欧美日韩在线| 久久精品国产www456c0m| 中文无码日韩欧| 亚洲综合在线电影| 亚洲一级淫片| 国产精品黄色| 夜夜嗨一区二区| 成人亚洲一区| 日韩久久一区| 亚洲激精日韩激精欧美精品| 国产伦精品一区二区三区视频| 国产极品一区| 视频一区视频二区在线观看| 国产一区日韩| 黄色亚洲精品| 色在线中文字幕| 国产美女久久| 久久国产免费| 欧美国产美女| 日本不卡高清| 9色国产精品| 精品一区二区男人吃奶 | 麻豆成人av在线| 丝袜美腿高跟呻吟高潮一区| 欧美成人基地| 国产成人在线中文字幕| 亚洲日本三级| 日韩一区精品视频| 精品国产网站| 亚洲色图国产| 亚洲精品乱码| 国产亚洲欧美日韩精品一区二区三区| 蜜桃成人精品| 99成人在线视频| 久久精品卡一| 激情综合网站| 99视频在线精品国自产拍免费观看| 四虎884aa成人精品最新| 91精品国产乱码久久久久久久| 久久精品中文| 欧美日韩伊人| 日韩午夜一区| 亚洲香蕉视频| 欧美精品观看| 麻豆一区二区在线| 精品国产aⅴ| 韩国三级一区| 在线看片福利| 黄色日韩在线| 日韩精品国产精品| 精品视频国产| 在线看片不卡| 欧美日韩1区| 国产一区二区精品久| 99精品综合| 国产精品久久国产愉拍| 激情视频一区二区三区| 日韩国产在线观看一区| 久久人人97超碰国产公开结果| 日本亚洲不卡| 国产精品羞羞答答在线观看| 欧美一区二区三区久久精品| 91一区二区| 午夜日韩av| 久久伊人亚洲| 日本免费新一区视频| 美国三级日本三级久久99| 国产精品大片免费观看| 国产美女精品| 欧美aaaaaa午夜精品| 欧美美女一区| 午夜av成人| 国产精品色在线网站| 免费视频最近日韩| 欧美亚洲精品在线| 精品国产一区二区三区2021| 日本久久二区| 日韩中文字幕一区二区三区| 91精品精品| 欧美.日韩.国产.一区.二区 | 欧美一区二区三区高清视频| 免费亚洲婷婷| 成人台湾亚洲精品一区二区| 国产毛片久久| 99亚洲视频| 黄页网站一区| 亚洲精品国产偷自在线观看| 99久久99视频只有精品| 国产资源在线观看入口av|