在Chrome开发者工具中查看AJAX响应内容?

55

传统上我使用FireBug来调试我的AJAX请求。它使您能够检查请求内容以及从服务器发送回来的响应。(它还在控制台中通知您这些事件的发生,这是一项有用的功能,Chrome似乎缺少这个功能)。

在Chrome中,我只能查看请求,而不能查看响应。当我尝试检查响应时,UI只显示“没有可用内容”(Developer Tools > Resources > myRequest.php > Content) 。我需要打开什么东西让Chrome开发者工具记录这些请求吗?

编辑:如果有影响,请注意,这些请求是在Flash对象内进行的。


2
我有同样的问题。我没有安装任何扩展程序。我已经打开了“记录XMLHttpRequests”,并尝试了所有我能找到的建议。我必须使用Firefox + Firebug或Charles代理来调试所有带有ajax的代码。很遗憾,Chrome似乎没有任何支持查看Ajax响应的功能,这真是一件痛苦的事情。 - John Little
FYI,这些请求也是从 Flash 中发出的,并且响应是 application/json。 - John Little
请重新接受正确的答案。 - T.Todua
9个回答

87

如果您正在使用 Google Chrome 的 dev 通道:

http://www.chromium.org/getting-involved/dev-channel

......您应该可以在开发者工具控制台中右键单击,然后点击“启用 XMLHttpRequest 日志记录”。

一旦启用,您将在控制台中看到 XHR 请求,并能够点击它们以进入资源面板,在那里您将能够查看 XHR 的内容。


12
+1 - 这现在应该成为被采纳的答案。这个问题已经有些陈旧了。 - Mike
11
这对我没用。我已启用XMLHTTPRequest日志记录,但在开发工具网络XHR响应选项卡中,它始终显示“此请求没有可用的响应数据”。在Chrome中无法查看任何ajax响应(至少对我来说是这样)。我必须使用Firebug才能正确显示。 - John Little
2
是的,我只看到我的AJAX函数名称。没有数据。 - Ben Racicot
当我这样做时,我会进入CORS OPTION请求,该请求为空(如预期),但数据响应仍然显示“此请求没有可用的响应数据”,不幸的是,答案没有帮助解决这个问题。并且您将能够单击它们以转到资源面板。 - Ivan Borshchov
这并没有回答问题。这只是显示请求正在控制台中进行。他试图查看响应数据,但是响应数据显示“此请求没有可用的数据”。 - taystack

10
你所看到的可能只是CORS请求的OPTIONS请求,在Google Chrome检查器中被视为XHR请求。因此,如果你按XHR请求进行过滤,你可能只会看到最初的OPTIONS预检请求,其响应没有内容,会感到困惑,因为似乎Chrome拒绝显示响应。禁用过滤器并转到相同URL的下一个请求,很可能是对应于该CORS预检请求的“真实”请求。

3
我遇到了同样的问题:从Flash发出POST请求+JSON响应+在Chrome检查器中没有显示响应。 但在FF + FireBug中没有问题。
在响应头中添加charset = utf-8到Content-Type解决了我的问题:
Content-Type:application / json; charset = utf-8
我不确定这是否是此问题的正确解决方法,但至少现在我能够在Chrome检查器中看到JSON响应了。

这对我也解决了问题 - 缺少字符集导致数据无法显示。 - nwinkler
好知道。希望Chrome能解决这个问题,因为由于操作系统升级导致了一些与此无关的工具链问题,我无法更改内容类型,而一个如此简单的问题却引起了如此大的分歧,真是荒谬。 - Michael
很遗憾没有帮助,我已经在使用Content-Type: application/json; charset=utf-8 - Ivan Borshchov

2

如果请求是由插件生成的,ajax响应的内容目前还不可见。有一些可能性,这个问题很快就会被解决。


9
这不再是真实的情况。请参考Masterov对这个问题的回答。 - Ardee Aram
还要考虑Fiddler 2——它安装快速、免费且易于使用。没有其他应用程序能够为您提供更全面和详细的视图,查看所有传输的内容,包括任何浏览器、任何插件甚至应用程序。它曾经多次帮助过我 :-) - mindplay.dk
2
我没有任何插件,每次进行ajax请求时都会得到“此请求没有响应数据”的提示。所以我只能使用Firefox和Firebug来调试。令人惊讶的是,Chrome没有支持查看ajax响应的功能。 - John Little

2

PHP的解决方案:

可能的原因是请求的URL(php页面)存在错误。但由于许多托管服务已禁用错误输出,因此您需要在请求的.php文件中启用它(将其放置在文件顶部的某个位置):

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

之后,你将在那里看到响应。

前端响应的解决方案:

有时,如果您在浏览器控制台中执行此代码,则可能会进行快速调试:

(function() {
    var origOpen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function() {
        this.addEventListener('load', function() {
            console.log(this);
        });
        origOpen.apply(this, arguments);
    };
})();

谢谢,这对我有用。我遇到了“致命错误:分配262144字节时内存大小已耗尽(尝试分配134217728字节)...”的错误。 - Sašo Kovačič

1

打开资源跟踪,然后检查资源选项卡。如果您勾选“始终使用资源跟踪”,资源跟踪似乎会更好地工作。


资源跟踪已经开启。我可以看到请求正在被发出,以及这些请求的头部信息,但无法查看内容。(注意:这仅适用于AJAX请求,并且可能仅适用于Flash中发出的请求)。 - Ender
很奇怪,我不使用Flash,也许这就是问题所在...如果你还没有尝试过更近期的Chrome/Chromium开发版本,那么这可能值得一试。 - Dagg Nabbit

1
我得到了空响应,因为脚本发送了空数据。
die();

0
在失败的回调函数中,第一个参数有一个名为responseText的属性。

0

原因可能不仅在于Chrome本身,也有可能是由JS代码阻止了预览。例如,有一个名为Vue.js的插件叫做vue-resorcese,它曾经出现过这个问题: Chrome, no response data after OPTIONS request? 我曾经忍受了几个月,直到今天找到了这个问题。当前的问题没有给出答案,所以我现在在这里分享一下。

详情: 这个插件有以下代码来创建XHR对象:

if ('responseType' in xhr && SUPPORTS_BLOB) {
       xhr.responseType = 'blob';
}

这段代码之前是可以的,预览也能正常工作,但在某次 Chrome 更新后出现了问题。今天当我将其注释掉后,预览又恢复了!所以首先,请检查您的 XHR 包装器,可能有类似的问题。

这是一个罕见的问题,因为它只在 CORS 预检时才会重现。顺便说一下,在 OPTIONS XHR 上右键单击和选择 REPLAY 也可以显示预览。

就是这样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接