145

出于某种原因,在使用 AJAX(使用我的开发的应用程序)时,浏览器只是停止上传并返回0. 为什么会这样?

4

21 回答 21

115

另一个案例:

0如果您已发送 AJAX 调用并且在获得 AJAX 响应之前触发了浏览器刷新,则可能会获得状态代码。AJAX 调用将被取消,您将获得此状态。

于 2012-09-27T12:56:29.323 回答
108

根据我的经验,在以下情况下,您会看到状态为 0:

  • 执行跨站点脚本(拒绝访问)
  • 请求无法访问的 URL(错字、DNS 问题等)
  • 否则请求被拦截(检查您的广告拦截器)
  • 如上,如果请求被中断(浏览器离开页面)
于 2010-01-06T20:43:51.810 回答
9

使用时同样的问题<button onclick="">submit</button>。然后通过使用解决<input type="button" onclick="">

于 2014-03-12T21:16:41.177 回答
8

状态码 0 表示请求的 url 不可访问。通过将http://something/something更改为https://something/something对我有用。当状态码为 0 时,IE 会抛出“权限被拒绝”的错误,其他浏览器则不会。

于 2011-06-23T17:03:48.293 回答
7

需要注意的是,即使在会话中,ajax 调用也可能会失败,该会话由具有前缀为 www 的特定域的 cookie 定义。当您然后调用您的 php 脚本时,例如没有 www。url 中的前缀,调用将失败,反之亦然。

于 2012-09-03T11:54:48.480 回答
4

This article helped me. I was submitting form via AJAX and forgotten to use return false (after my ajax request) which led to classic form submission but strangely it was not completed.

于 2012-03-12T21:35:13.037 回答
4

因为这会在您使用 google ajax status 0 时显示出来,所以我想留下一些提示,这让我浪费了数小时的时间……我正在使用 ajax 调用 PHP 服务,该服务恰好是 Phil 的 Codeigniter 的 REST_Controller(不确定这是否有与它有什么关系)并不断获得状态 0,就绪状态 0,这让我发疯了。我正在调试它,并注意到当我回显并返回而不是退出消息时,我会成功。最后我关闭调试并尝试,它工作。似乎带有 PHP 的 xDebug 调试器以某种方式修改了响应。如果您使用 PHP 调试器,请尝试将其关闭以查看是否有帮助。

于 2012-02-08T18:34:28.380 回答
3

“意外”表单提交正是我遇到的问题。我刚刚完全删除了 FORM 标签,这似乎解决了这个问题。谢谢大家!

于 2012-08-08T19:54:10.883 回答
3

我有同样的问题,它与浏览器的 XSS(跨站点脚本)阻止有关。我设法使用服务器使其工作。

看看:http ://www.daniweb.com/web-development/javascript-dhtml-ajax/threads/282972/why-am-i-getting-xmlhttprequest.status0

于 2014-03-21T14:01:50.217 回答
3

我发现 jquery 为您提供状态代码 0 的另一种情况——如果由于某种原因未定义 XMLHttpRequest,您将收到此错误。

显然,这通常不会发生在网络上,但是夜间 Firefox 构建中的一个错误导致它出现在我正在编写的附加组件中。:)

于 2012-04-07T21:51:41.240 回答
2

We had similar problem - status code 0 on jquery ajax call - and it took us whole day to diagnose it. Since no one had mentioned this reason yet, I thought I'll share.

In our case the problem was HTTP server crash. Some bug in PHP was blowing Apache, so on client end it looked like this:

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:~$ 

where test.php contained the crashing code. No data returned from the server (not even headers) => ajax call was aborted with status 0.

于 2013-12-17T17:07:40.127 回答
2

在我的情况下,这是由于在下运行我的 django 服务器http://127.0.0.1:8000/但将 ajax 调用发送到http://localhost:8000/. 即使您希望它们映射到相同的地址,它们也不能确保您没有将请求发送到 localhost。

于 2014-12-17T22:56:53.497 回答
2

在我们的例子中,页面链接从https更改为http。即使用户已登录,他们也无法使用 AJAX 加载。

于 2018-04-19T14:40:06.757 回答
1

对我来说,这个问题是由托管公司(Godaddy)将具有大量响应数据(超过几十千字节)的 POST 操作视为某种安全威胁引起的。如果在一分钟内发生超过 6 次,则主机拒绝执行下一分钟响应 POST 请求的 PHP 代码。我不完全确定主机做了什么,但我确实看到,通过 tcpdump,一个 TCP 重置数据包作为对来自浏览器的 POST 请求的响应而出现。这导致 jqXHR 对象中返回的 http 状态码为 0。

将操作从 POST 更改为 GET 解决了该问题。目前尚不清楚 Godaddy 为何施加此限制,但更改代码比更改主机更容易。

于 2014-07-31T08:15:39.810 回答
1

在我的情况下,url: ''在 ajax 设置中设置会导致 ie8 中的状态代码为 0。似乎 ie 只是不能容忍这样的设置。

于 2012-03-11T07:18:09.323 回答
1

在我的故障排除中,我发现这个 AJAX xmlhttpRequest.status == 0 可能意味着客户端调用尚未到达服务器,但由于客户端问题而失败。如果响应来自服务器,则状态必须是那些 1xx/2xx/3xx/4xx/5xx HTTP 响应代码。此后,故障排除将集中在客户端问题上,可能是互联网网络连接中断或上述@Langdon 描述的问题之一。

于 2019-04-05T17:07:54.403 回答
1

我想我知道可能导致此错误的原因。

在 google chrome 中,有一个内置功能可以防止对 google chrome 扩展的 ddos​​ 攻击。

当 ajax 请求连续返回 500+ 个状态错误时,它开始限制请求。

因此,可以在以下请求中接收状态 0。

于 2017-05-08T02:18:47.517 回答
1

试图以所描述的问题的最愚蠢的原因赢得奖品。

忘记打电话

xmlhttp.send(); //yes, you need this pivotal line!

是的,我仍然从“开放”调用中获得零状态返回。

于 2017-06-29T00:55:55.730 回答
1

就我而言,我得到了这个,但只在 Safari Mobile 上。问题是我使用的是完整的 URL ( http://example.com/whatever.php ) 而不是相对的 URL (whatever.php)。但这没有任何意义,它不可能是 XSS 问题,因为我的网站托管在http://example.com。我猜 Safari 会查看 http 部分并自动将其标记为不安全请求,而无需检查 URL 的其余部分。

于 2018-12-26T18:49:45.720 回答
0

在发出请求时观察浏览器控制台,如果您看到“同源策略不允许在 http ajax 读取远程资源......原因:cors header 'access-control-allow-origin' missing”那么您需要在响应标头中添加“Access-Control-Allow-Origin”。例如:在 java 中,您可以像 response.setHeader("Access-Control-Allow-Origin", "*") 一样设置它,其中响应是 HttpServletResponse。

于 2018-09-13T06:14:01.660 回答
0

就我而言,我正在制作一个 Firefox 插件,但忘记为我尝试 ajax 的 url/域添加权限,希望这可以节省很多时间。

于 2021-02-09T21:29:55.617 回答