Answers:
另一种情况:
0
如果您已经发送了AJAX调用,并且在获取AJAX响应之前触发了浏览器刷新,则可能会获得状态代码。AJAX呼叫将被取消,您将获得此状态。
<form onsubmit="return false;">
e.preventDefault();
以我的经验,在以下情况下,您会看到状态为0:
使用时,这里也有同样的问题<button onclick="">submit</button>
。然后用<input type="button" onclick="">
状态代码0表示无法访问所请求的网址。通过将http:// something / something更改为https:// something / something对我有用。当状态代码为0时,IE引发错误,提示“权限被拒绝”,其他浏览器则不显示。
我遇到了同样的问题,它与浏览器的XSS(跨站点脚本)阻止有关。我设法使用服务器使其工作。
看看:http : //www.daniweb.com/web-development/javascript-dhtml-ajax/threads/282972/why-am-i-getting-xmlhttprequest.status0
我们有类似的问题-jquery ajax调用状态码为0-我们花了整整一天的时间来诊断它。既然没有人提到这个原因,我想我会分享。
在我们的案例中,问题是HTTP服务器崩溃。PHP中的一些错误正在吹散Apache,因此在客户端上看起来像这样:
mirek@toccata:~$ telnet our.server.com 80
Trying 180.153.xxx.xxx...
Connected to our.server.com.
Escape character is '^]'.
GET /test.php HTTP/1.0
Host: our.server.com
Connection closed by foreign host.
mirek@toccata:~$
其中test.php包含崩溃代码。服务器没有返回任何数据(甚至没有报头)=> ajax调用被中止,状态为0。
在我的情况下,这是由于在django服务器下运行http://127.0.0.1:8000/
却将ajax调用发送至引起的http://localhost:8000/
。即使您希望它们映射到相同的地址,他们也不要这样做,以确保您没有将请求发送到本地主机。
就我而言,我只能在Safari Mobile上使用。问题是我使用的是完整URL(http://example.com/whatever.php),而不是相对URL (whatever.php)。但这没有任何意义,因为我的网站托管在http://example.com上,所以它不是XSS问题。我猜想Safari浏览器会查看http部分并自动将其标记为不安全的请求,而无需检查URL的其余部分。
发出请求时,请观察浏览器控制台,如果看到“ Same Origin Policy不允许读取http ajax .....原因:cors标头'access-control-allow-origin'丢失”,那么您需要在响应标头中添加“ Access-Control-Allow-Origin”。例:在Java中,您可以像response.setHeader(“ Access-Control-Allow-Origin”,“ *”)这样设置,其中response是HttpServletResponse。