jQuery Ajax – 状态码0?

由于某种原因,我的dashcode开发的应用程序刚刚停止AJAXing并返回状态代码0.这是否发生在你身上? 有人有一个想法,为什么发生这种情况?

另一个案例:

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

根据我的经验,当进行跨站点脚本(访问被拒绝)或请求无法访问的URL(错字,DNS问题等)时,您将看到状态为0。

虽然它可能与dashcode无关, 但是当使用jQuery和AJAX状态代码0时出现这个StackOverflow问题,所以我想我会针对其他情况处理这个问题的人提供一个答案。 我最近遇到这个问题,发现以下链接有用:

当使用<button onclick="">submit</button>时,同样的问题在这里。 然后通过使用<input type="button" onclick="">

重要的是要注意,ajax调用可能会失败,即使在一个由一个以www为前缀的特定域的cookie定义的会话中也是如此。 当你然后调用你的PHP脚本,例如没有www。 前缀在URL中,调用将失败,反之亦然。

状态码0意味着请求的url不可访问。 通过改变http:// something / something到https:// something / something for me worked for me。 IE浏览器在状态码为0时抛出一个错误,说“权限被拒绝”,其他浏览器不用。

http://markos.gaivo.net/blog/?p=109 – 这帮了我。 我通过AJAX提交表单,并忘记使用return false (在我的ajax请求后),导致经典的表单提交,但奇怪的是没有完成。

因为这显示了当你谷歌ajax状态0我想留下一些小费,只是花了我几个小时的浪费时间…我用ajax来调用一个PHP服务碰巧是菲尔的CodeGo.net,REST_Controller(不知道这是否任何事情与它或不),并保持状态0,readystate 0,这是让我疯了。 我正在debugging它,并注意到当我回声,并返回而不是退出消息,我会得到成功。 最后,我关掉了debugging程序,然后尝试了一下, 似乎与PHP的xDebugdebugging器以某种方式修改响应。 如果您使用PHPdebugging器尝试closures它,看看是否有帮助。

我发现另一种情况,jQuery给你状态码0 – 如果由于某种原因XMLHttpRequest没有定义,你会得到这个错误。

很明显,这通常不会发生在networking上,但是每晚的Firefox构build中的一个错误导致了这个问题在我写的附加组件中出现。 🙂

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

我们有类似的问题 – 在jquery ajax调用状态代码0 – 并花了我们整天的诊断。 由于没有人提到这个原因,我想我会分享。

在我们的情况下,问题是HTTP服务器崩溃。 PHP中的一些bug吹的是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包含崩溃的代码。 没有从服务器返回的数据(甚至没有头)=>阿贾克斯呼叫被中止状态为0。

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

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

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

在我的情况下,在阿贾克斯设置中设置url: ''会导致ie8中的状态码为0 ..看起来就是不能容忍这样的设置。

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

将操作从POST更改为GET解决了问题。 目前还不清楚为什么Godaddy强加这个限制,但改变代码比改变主机更容易。

我想我知道什么可能会导致这个错误。

在谷歌浏览器有一个内置的function,以防止DDOS攻击谷歌浏览器扩展。

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

因此,可以根据以下请求接收状态0。

为了获得所描述的问题最愚蠢的原因而获奖。

忘记打电话

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

是的,我仍然从“打开”电话获得零回报状态。