22

我有一个 web 应用程序,它在使用 google chrome 的 ajax 请求时崩溃(它适用于它测试过的所有其他 web 浏览器)。调试后发现错误是由于 response.responseText 未定义造成的。xhr 对象如下所示:

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

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

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

4

2 回答 2

13

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

于 2012-12-17T21:53:59.070 回答
4

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

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

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

于 2013-02-17T02:42:17.437 回答