如何在google chrome中调试失败的ajax请求?

zef*_*ciu 21 debugging ajax google-chrome

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

argument: undefined
isAbort: false
isTimeout: undefined
status: 0
statusText: "communication failure"
tId: 3
Run Code Online (Sandbox Code Playgroud)

在"网络"选项卡的调试器中,我得到"(失败)",但是所有的标题都存在,我甚至可以将响应主体(这是一个有效的JSON)复制到剪贴板中.

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

Kor*_*rri 13

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

  • 谢谢你指出这一点.在下午用尽了我的头脑. (3认同)
  • [HTTPs Everywhere](https://www.eff.org/https-everywhere)引起了我的问题. (2认同)

小智 4

我要仔细检查的第一件事是从响应返回的数据是否是有效的 JSON。只需将其传递给 JSON 验证器,例如在线 JSONLint: http: //jsonlint.com/

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

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