是否可以通过通用JavaScript(而不是框架)检测网页上的全局AJAX调用(尤其是响应)?
我已经在StackOverflow上审查了“JavaScript检测到AJAX事件 ”
的问题,并尝试将接受的答案的代码修补到我的应用程序中,但是没有用。之前,我从未使用AJAX做任何事情,我还不足以对其进行修改以使其正常工作。
我不需要任何花哨的东西,我只需要检测所有(特定的,实际上,但是我必须先检测所有的AJAX响应,然后将它们修补到IF语句中才能使用)。所以,最终,我想要这样的东西:
if (ajax.response == "certainResponseType"){
//Code
}
, 例如。
更新: 看来我应该澄清一下,我不是在尝试发送请求-我正在开发内容脚本,并且我需要能够 检测
网页的AJAX请求(不是我自己的请求),因此我可以执行检测到响应时起作用。
以下是一些代码(通过粘贴到Chrome31.0.1650.63的控制台中进行测试),用于捕获和记录或以其他方式处理ajax请求及其响应:
(function() {
var proxied = window.XMLHttpRequest.prototype.send;
window.XMLHttpRequest.prototype.send = function() {
console.log( arguments );
//Here is where you can add any code to process the request.
//If you want to pass the Ajax request object, pass the 'pointer' below
var pointer = this
var intervalId = window.setInterval(function(){
if(pointer.readyState != 4){
return;
}
console.log( pointer.responseText );
//Here is where you can add any code to process the response.
//If you want to pass the Ajax request object, pass the 'pointer' below
clearInterval(intervalId);
}, 1);//I found a delay of 1 to be sufficient, modify it as you need.
return proxied.apply(this, [].slice.call(arguments));
};
})();
此代码以可接受的答案解决了上述问题:
请注意,如果使用框架(如jQuery),则可能无法正常工作,因为调用send后它们可能会覆盖onreadystatechange(我认为jQuery确实如此)。或者他们可以覆盖send方法(但这是不可能的)。因此,这是部分解决方案。
因为它不依赖于未更改“ onreadystatechange”回调,而是监视“ readyState”本身。
问题内容: 好的,所以基本上我想在页面上放一些JavaScript,以某种方式附加某种全局事件侦听器,该侦听器可以在发出ajax请求时检测并执行某些操作(无需直接从调用中调用它),而不管ajax如何打电话了。 我想出了如何使用jquery-如果ajax请求是 由 jquery 完成 的 。这是一个示例代码: 使用此代码,无论我在哪里/如何调用$ .post(..),全局事件监听器都会触发。如果我使
问题内容: 好的,所以基本上我想在页面上放置一些JavaScript,以某种方式附加某种全局事件侦听器,该侦听器可以在发出ajax请求时检测并执行某些操作(而无需从调用中直接调用),而不管ajax如何打电话了。 我想出了如何使用jquery-如果ajax请求是 由 jquery 完成 的 。这是一个示例代码: 使用此代码,无论我在哪里/如何调用$ .post(..),全局事件监听器都会触发。如果我
问题内容: 在我的动作中,我只希望响应从AJAX请求中调用的处理。我该如何检查? 我想做这样的事情: 问题答案: 您可以检查是否为AJAX请求。这是一篇很好的文章。 这是一个例子:
主要内容:Ajax 的工作原理,发送 Ajax 请求,检索响应信息Ajax 全称“Asynchronous JavaScript and XML”,译为“异步 JavaScript 和 XML”,程序员们习惯称之为“阿贾克斯”,它并不是一种技术,而是多种技术的综合体,其中包括 JavaScript、XML、JSON、DOM、CSS、HTML 以及最重要的 XMLHttpRequest 对象。通过 Ajax 可以异步从服务器请求数据并将数据更新到网页中,整个过程不
问题内容: 我想使用jQuery来获取URL,并明确检查它是否响应302重定向,但 不 遵循重定向。 jQuery 似乎总是遵循重定向。如何防止这种情况,并且不遵循重定向就可以看到重定向? 标题有很多问题,例如“ jquery ajax redirect”,但它们似乎都涉及实现其他目标,而不仅仅是直接检查服务器给出的状态。 问题答案: AJAX请求永远不会有机会不遵循重定向(即,它必须遵循重定向)
问题内容: 我正在使用simple_form gem并生成表单,我正在指定remote:true选项,如下所示: 因此,表单的输出html是以下片段: 正如我检查的那样,当使用 remote:true 选项时,使用标准的form_for帮助器将 data-remote =’true’添加 到表单中。从生成的html中可以看到,当我使用simple_form gem时,也有这样的属性。 __ 因此,