【问题标题】:How to debug a failed ajax request in google chrome?如何在谷歌浏览器中调试失败的 ajax 请求?
【发布时间】:2012-06-27 12:08:42
【问题描述】:

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

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

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

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

【问题讨论】:

  • 请提供有关服务器和网络基础设施的更多信息。每次发出请求时都会出现错误还是偶尔出现?
  • 您能展示一下您是如何进行 AJAX 调用的吗?另外,你能告诉它在哪些浏览器中工作吗?
  • 您在 JavaScript 控制台中没有收到任何错误吗?
  • 这个错误说什么?你能把错误信息贴在这里吗?

标签: ajax debugging google-chrome


【解决方案1】:

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

【讨论】:

  • 感谢您指出这一点。花了更好的下午来解决这个问题。
  • 谢谢,你拯救了我的一天! adBlocks 阻止了 ajax 请求,例如 ads/add ...从 adBlocks 中排除域解决了我的问题!
【解决方案2】:

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

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

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

【讨论】:

  • 我不确定这是否是正确的解决方法,因为这是很久以前的事了,但我认为无效的 json 不会成为将请求显示为失败的原因。所以我接受你的回答,希望以后如果遇到这种情况,会有所帮助。
猜你喜欢
  • 2014-02-12
  • 1970-01-01
  • 1970-01-01
  • 2017-03-29
  • 1970-01-01
  • 2023-02-10
  • 2012-07-15
  • 1970-01-01
  • 2022-06-13
相关资源
最近更新 更多