在Chrome中设置XHR中的断点
我有一个页面在提交表单时发送XHR请求,我希望Chrome在收到响应时中断。 这似乎是最好的方式来实现这一点,如果Chrome有一个JavaScript函数,我可以打电话,打破执行,但我一直无法找到类似的东西。 还有其他解决方案吗?
编辑 :
我实际上没有为请求定义回调,所以我不能以这种方式设置断点。 该请求正在与这行jQuery代码一起发送:
$.post(this.action, $(this).serialize(), null, "script");
this
是一个表单元素。 null
参数是你通常定义一个回调的地方,但是使用"script"
参数,原始的javascript被服务器返回然后直接执行,所以它似乎是唯一破解和遍历代码的方法是使用debugger;
声明。 这是有效的,但是在逐步完成代码时,你实际上看不到你在哪条线上,所以它有点尴尬。 我怀疑这是Chrome调试工具的限制。
你可以在成功回调中设置一个断点,然后逐步调试。 设置断点:
或者,您可以使用debugger
语句自动调用调试器。 因此,您的成功回调可能如下所示:
success: function(data, textStatus, request) {
debugger; // pause execution and opens debugger at this point
...
}
还要检查这篇用于调试JavaScript的好文章。
但是,第一种方法更好,因为它不需要您修改代码。
放下镀铬控制台(ctrl + shift + j)并输入以下任何一个:
只需重写jquery ajax:
var prevajax = jQuery.ajax;
jQuery.ajax = function () { debugger; return prevajax.apply(jQuery, arguments); };
或者如果您不使用jQuery,请重写xhr类:
var prevxhr = XMLHttpRequest;
XMLHttpRequest = function (){debugger; prevxhr.apply(this, arguments);};
中断后,只需按shift + f11,直到找到启动ajax请求的方法。
您也可以转到开发人员工具中的脚本选项卡,并在右侧单击XHR断点并通过URL过滤添加新断点。
如果你使用jQuery
,当发生断点时,你可以使用CallStack
来找到你的叫做jQuery.ajax
的函数。