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!
是的,我仍然从“打开”电话获得零回报状态。
- 调用从Ajax响应返回的JavaScript函数
- Codeigniter会话与Ajax调用
- 带有图像的ASP.NET MVC Ajax.ActionLink
- 如何与node.js一起使用jQuery ajax调用
- 如何使用jQuery / AJAX和PHP / MySQL根据第一个下拉列表select第二个下拉列表?
- Scrapy可以用来从使用AJAX的网站上抓取dynamic内容吗?
- 如何在rails下设置webrick中的access-control-allow-origin?
- jQuery $ .ajax(),$ .post在Firefox中发送“OPTIONS”作为REQUEST_METHOD
- Gzip的JavaScript实现