为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript检测到AJAX事件

JavaScript检测到AJAX事件

料青山看我应如是 2019-10-16 12:42:21
好的,基本上,我想在页面上放置一些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-至少对于我来说,以下链接中提供的答案不是很清楚。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 409 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信