JavaScript检测到AJAX事件

好的,基本上,我想在页面上放置一些JavaScript,以某种方式附加某种全局事件侦听器,该侦听器可以在发出ajax请求时检测并执行某些操作(无需从调用中直接调用它),而不管ajax如何打电话了。


我想出了如何使用jquery-如果ajax请求是由 jquery 完成的。这是一个示例代码:


$.post(

  // requested script

  'someScript.php', 

  // data to send

  {

    'foo' : 'bar',

    'a' : 'b'

  },

  // receive response

  function(response){

    // do something

  }

); // .post


// global event listener    

$(document).ajaxSend(

  function(event,request,settings){

    alert(settings.url); // output: "someScript.php"

    alert(settings.data); // output: "foo=bar&a=b"

  }

);

使用此代码,无论我在哪里/如何调用$ .post(..),全局事件监听器都会触发。如果我使用$ .get或$ .ajax(任何jquery ajax方法),也不管我如何调用它/何时调用(附加为onclick,页面加载等),它也可以工作。


但是,我希望能够扩展此侦听器以触发,无论使用什么js框架,甚至不使用任何框架。因此,例如,如果我在页面上还包含以下代码(w3schools的通用ajax代码):


function loadXMLDoc()

{

if (window.XMLHttpRequest)

  {// code for IE7+, Firefox, Chrome, Opera, Safari

  xmlhttp=new XMLHttpRequest();

  }

else

  {// code for IE6, IE5

  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

  }

xmlhttp.onreadystatechange=function()

  {

  if (xmlhttp.readyState==4 && xmlhttp.status==200)

    {

    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

    }

  }

xmlhttp.open("GET","test.txt",true);

xmlhttp.send();

}

然后,我有一些随机链接一个onclick调用该函数,我的全局AJAX事件侦听器应该能够同时检测到这一请求。好吧,我将该代码添加到了页面中,并将其附加到了随机链接的onclick(是的,代码本身可以工作),但是上面的jquery“全局事件监听器”代码未能检测到该调用。


我做了更多的挖掘工作,我知道我基本上可以将对象保存到temp对象,并用“包装器”对象覆盖当前对象,该“包装器”对象将调用指定的函数,然后调用temp函数,但这需要我提前知道创建/使用原始对象的时间。但是我永远不会总是提前知道...


那么...这可能吗?是否有某种方法可以检测到发出的ajax获取/发布请求,而不管它是使用通用对象还是通过xyz框架完成的?还是我只需要制作重复的代码来处理每个框架,并且还提前知道正在创建/使用的ajax对象?


编辑:


我忘了提一下,仅检测到一个请求是不够的。我还需要捕获请求中发送的数据。以下评论中提供的链接将帮助您确定是否发出了“ a”请求,但未获取发送的数据。ps-至少对于我来说,以下链接中提供的答案不是很清楚。


料青山看我应如是
浏览 394回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript