如何在谷歌浏览器中调试失败的ajax请求



我有一个Web应用程序,它使用谷歌浏览器在ajax请求时崩溃(它适用于它测试过的所有其他Web浏览器)。调试后,我发现错误是由响应引起的。xhr 对象如下所示:

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

在调试器的"网络"选项卡中,我得到"(失败)",但是所有标头都在那里,我甚至可以将响应正文(这是一个有效的 JSON)复制到剪贴板中。

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

我终于找到了解决问题的方法:AdBlocks,当它阻止ajax请求时,它只是说"通信失败"。

我要仔细检查的第一件事是从响应返回的数据是有效的 JSON。只需通过像这样的在线JSONLint这样的JSONLint传递它:http://jsonlint.com/

我假设你正在使用类似jQuery的东西来发出你的AJAX请求。如果是这样,请确保您使用的是该库的开发版本。现在您使用的是脚本的开发版本(未压缩),找到您正在使用的特定函数(例如 $.ajax),然后在 Chrome 检查器中,在首次处理 AJAX 响应的代码中插入断点(例如 https://github.com/jquery/jquery/blob/master/src/ajax.js#L579)。然后继续单步执行代码,检查各种返回值以准确查看出了什么问题。

如果您不使用jQuery之类的东西来进行AJAX调用,那么我建议您使用框架来避免可能遇到的跨浏览器兼容性问题,例如您现在可能遇到的问题。

最新更新