• AJAX问题 XMLHttpRequest.status = 0是什么含义


    在调用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。

  • 相关阅读:
    EXE、DLL和OCX文件的最佳压缩工具ASPack
    mysql忘记帐号密码 解决办法。
    vs2010 C++ 静态编译(解决:程序在别人的机子运行不了,缺少mfc100.dll, xxx100d.dll等的解决方法)
    去掉word每个标题前都有个小黑点 附word2003与2007方法
    struts2 中jsp页面replace的使用
    struts2 改变portlet windowState
    .net 知识补充 注意点
    广义表(1)
    字符串匹配(kmp)
    二叉排序树
  • 原文地址:https://www.cnblogs.com/ranyonsue/p/9187799.html
Copyright © 2020-2023  润新知