AJAX请求从每个页面访问服务器,我无法找到原始AJAX调用的源
AJAX request hits server from every page and I can't find the source of that original AJAX call
在我的数千行javascript中,某个地方正在进行ajax调用。我无论如何也想不出它是从哪儿来的。它似乎发生在页面加载后。
我可以在firebug中看到ajax调用正在进行。ajax调用总是请求当前页面。因此,例如,一旦users#new
加载,它就会请求users#new.js
,并对所有其他控制器和动作执行相同的操作。
是否有一种方法可以确定在代码中它是从哪里被调用的?
虽然您已经找到了解决方案,但是您仍然可以使用调试器来纠正这种情况。假设您正在使用jQuery及其AJAX帮助程序,只需在$.ajax
方法的第一行设置一个断点。
当对$.ajax
进行调用时,运行时将在断点处停止,您可以查看调用堆栈以确定调用来自何处。
如果您直接使用XMLHttpRequest
构造函数,而不是通过jQuery或其他包装器,那么为了跟踪其调用者,请将原始XMLHttpRequest
构造函数替换为虚拟实现。
function XMLHttpRequest() {
this.open = function() {}; // ignore
this.send = function() {
debugger;
};
}
在这个被覆盖的实现的send方法中放置一个断点或以编程方式调用调试器,每当有人试图实例化一个新的XMLHttpRequest
对象并调用send
方法时,您可以拦截调用并查看调用跟踪以找出谁进行了调用。
有很多不错的调试选项,比如Firefox的Firebug,或者Chrome和Safari内置的开发者工具。
在JavaScript控制台上,您可以用自己的实现覆盖XMLHttpRequest.send()
,并在那里设置一个断点,以便在调用它时可以在调试器中检查堆栈跟踪。
var send = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function () {
send.apply(this, arguments); // set break point here
};
在某个时间点,我重新编写了ajax设置函数
$。= $。ajaxSetup,显然:)
相关文章:
- 从ajax请求中获取原始文本
- 将单击事件附加到按钮或链接上的类,该按钮或链接会触发 AJAX 帖子,然后延迟并继续原始操作
- 在Ajax调用后返回到原始状态的HTML
- AJAX调用不显示原始页面或刷新它
- 在 AJAX 回调之后,onblur 会返回到原始(或更新)字段
- HTML In Page 在使用 AJAX 更改内部 HTML 后恢复为原始 HTML
- AJAX-PHP;XML-POST请求指向PHP文件,而不是停留在原始页面
- 我应该将原始数据或Html作为Ajax响应发送吗
- ajax表单提交后iScroll4高度错误.高度是表单提交前的原始高度
- AJAX请求从每个页面访问服务器,我无法找到原始AJAX调用的源
- JQuery Ajax POST -请求体不显示在原始HTTP请求
- Ajax get,如果没有找到原始url,则替换url
- 提交ajax请求时,如何“搁置”原始请求?在满足条件之前暂时使用
- jQuery UI可排序-在ajax错误后恢复原始位置
- 将PHP变量作为Ajax传递回原始页面上的JavaScript变量
- 处理原始JavaScript返回到.ajax错误函数,尽管200 OK
- 在弹出窗口关闭后在原始页面显示jQuery ajax变量
- 如何在不使用AJAX的情况下发布原始JSON数据
- Jquery AJAX返回原始数据或准备使用的HTML
- 使用jQuery提交表单(json编码,ajax,解析原始url/方法)