在調用AJAX的時候遇到了XMLHttpRequest. status爲0 的狀況,http協議裏但是沒這個狀態碼的,衆所周知,XMLHttpRequest. Status爲HTTP請求狀態碼,通常爲1xx-5xx,這個0是什麼含義,讓我以爲很好奇。html
XMLHttpRequest 對象的三有個重要的屬性:跨域
onreadystatechange 瀏覽器
存儲函數(或函數名),每當 readyState 屬性改變時,就會調用該函數。服務器
readyState函數
存有 XMLHttpRequest 的狀態。從 0 到 4 發生變化。url
0: 請求未初始化spa
1: 服務器鏈接已創建code
2: 請求已接收xml
3: 請求處理中htm
4: 請求已完成,且響應已就緒
status
200: "OK"
404: 未找到頁面
XMLHttpRequest status = 0 問題
最後翻啊翻啊,找啊找啊,終於找到一個XMLHttpRequest的說明
The status attribute must return the result of running these steps:
status的值必定會返回運行這些步驟的結果。
一、If the state is UNSENT or OPENED, return 0.(若是狀態是UNSENT或者OPENED,返回0)
二、If the error flag is set, return 0.(若是錯誤標籤被設置,返回0)
三、Return the HTTP status code.(返回HTTP狀態碼)
若是在HTTP返回以前就出現上面兩種狀況,就出現0了。
後來我又查閱到了,0 表明本地響應成功。
先說兩個button,一個是url是:file:///E:/test2.html,另一個是:http://www.baidu.com。第一個button的url訪問只是本地打開沒有經過服務器,本身能夠用Wireshark捉包。
應該是xmlhttp本身在模擬,由於根本就沒經過服務器。本地直接打開而已。OPENED了,因此status爲0。
第二個button的url訪問雖然是其餘域名,抓包是有的,可是,這是跨域訪問了,
雖然去訪問了,應該是瀏覽器跨域的返回頭沒有容許,因此瀏覽器阻止,Access-Control-Allow-Origin這個屬性。因此status爲0。