我有一个网络应用程序崩溃了使用谷歌浏览器的ajax请求(它适用于所有其他测试它的网络浏览器)。调试后我发现错误是由response.responseText未定义引起的。 xhr对象如下所示:
argument: undefined
isAbort: false
isTimeout: undefined
status: 0
statusText: "communication failure"
tId: 3
在“网络”选项卡的调试器中,我得到“(失败)”,但是所有标题都存在,我甚至可以将响应正文(这是一个有效的JSON)复制到剪贴板中。
我的问题是 - 如何调试此问题?在哪里可以找到其他信息,导致此请求失败的原因是什么?
答案 0 :(得分:13)
我终于找到了我的问题的解决方案:AdBlocks,当它阻止ajax请求时,它只是说“通信失败”。
答案 1 :(得分: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调用,那么我建议使用一个框架来避免你可能正在经历的跨浏览器兼容性问题。