2012-06-26 33 views
21

我有一个web应用程序崩溃的谷歌浏览器的ajax请求(它适用于每个其他的web浏览器,它被测试过)。调试后,我发现这个错误是由response.responseText导致的。 XHR对象看起来是这样的:如何在谷歌浏览器中调试失败的ajax请求?

argument: undefined 
isAbort: false 
isTimeout: undefined 
status: 0 
statusText: "communication failure" 
tId: 3 

在“网络”标签,我得到“(失败)”调试程序,但是所有的头在那里,我甚至可以复制到剪贴板中的响应体(这是一个有效的JSON)。

我的问题是 - 如何调试这个问题?在哪里可以找到更多信息,导致此请求失败的原因是什么?

+0

请,提供对服务器和网络基础设施的详细信息。每次发出请求或偶尔发生错误? – Stan

+0

你能告诉你如何做AJAX调用吗?另外,你能告诉它在哪个浏览器中工作吗? – Uooo

+0

您是否在JavaScript控制台中没有收到任何错误? – 2013-02-17 01:44:28

回答

4

首先我会仔细检查的事情是,未来从响应返回的数据是有效的JSON。只要通过像这样的JSON验证器通过JSONLint:http://jsonlint.com/

我假设你正在使用类似jQuery的东西来发出你的AJAX请求。如果是这样,那么请确保您使用的是该库的开发版本。现在,你正在使用的脚本的开发版本(未压缩),发现你正在使用的特定功能(如阿贾克斯$),然后,在Chrome检查中,插入代码中的一个断点了AJAX响应第一处理(例如https://github.com/jquery/jquery/blob/master/src/ajax.js#L579)。然后继续浏览代码,检查各种返回值以查看到底发生了什么问题。

如果你不使用的东西像jQuery做AJAX调用,那么我建议你使用一个框架,以避免可能出现的跨浏览器兼容性问题,如你可能会马上体验。

+0

我不确定这是否是正确的解决方案,因为它很久以前,但我认为无效的json可能是显示请求失败的原因。所以我接受你的意见,希望如果我将来遇到这个问题,这将会有所帮助。 – zefciu

13

我终于找到了解决我的问题:AdBlocks,这个插件是最有用的事情之一,在这里,但是当它块的东西在你的网站,它没有说为什么!

+3

感谢您指出这一点。花了这么多时间,我的头撞过了这个。 – applepie

+2

[HTTPs Everywhere](https://www.eff.org/https-everywhere)导致我的问题。 – Hengjie

+1

谢谢,你救了我的一天! adBlocks可以防止广告/添加等Ajax请求...不包括来自adBlocks的域名解决了我的问题! – RezaSh

相关问题