在调用AJAX的时候遇到了XMLHttpRequest. status为0 的情况http协议里可是没这个状态码的众所周知XMLHttpRequest. Status为HTTP请求状态码一般为1xx-5xx,这个0是什么含义让我觉得很好奇。
XMLHttpRequest 对象的三有个重要的属性
onreadystatechange
存储函数或函数名每当 readyState 属性改变时就会调用该函数。
readyState
存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成且响应已就绪
status
200: "OK"
404: 未找到页面
XMLHttpRequest status = 0 问题
最后翻啊翻啊找啊找啊终于找到一个XMLHttpRequest的说明
The status attribute must return the result of running these steps:
status的值一定会返回运行这些步骤的结果。
1、If the state is UNSENT or OPENED, return 0.如果状态是UNSENT或者OPENED返回0
2、If the error flag is set, return 0.如果错误标签被设置返回0
3、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。