如果您觉得足够安全,您肯定可以进入该代码(一点也不长)并在 onreadystatechange 部分添加一些逻辑。一旦 Ajax 调用完成,就会触发此事件。如果你喜欢它,你可以很容易地添加一些东西来和你的代码对话。
另一种方法是劫持XMLHttpRequest
,这样一旦send()
调用了它的方法,您就可以附加自己的事件侦听器来监视“加载”事件的请求。请求完成后,您可以调用自定义函数。这可以这样做:
XMLHttpRequest.prototype.originalSend=XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send=function(s){
this.addEventListener('load',function(){
//CALL YOUR CODE HERE
},false);
this.originalSend(s);
}
或者,您可以劫持 onreadystatechange 函数来添加一些您自己的逻辑:
XMLHttpRequest.prototype.originalSend=XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send=function(s){
if(this.onreadystatechange){
var oldORSC=this.onreadystatechange;
}
this.onreadystatechange=function(){
if (this.readyState==4 && this.status==200){ //a successful request
//CALL YOUR CODE HERE
}
if(oldORSC){
oldORSC();
}
}
this.originalSend(s);
}
当然,如果你想支持 IE,你将不得不对他们用于 AJAX 的 ActiveXObject 做类似的事情。但我不使用它,所以我不能给你任何例子。
编辑:这假设您的页面仅为此目的进行调用。如果您有其他 AJAX 调用,则需要添加逻辑来确定正在使用哪个调用。为此,您可以挂钩该open()
方法并检查 URL 或参数或任何特定信息将帮助您确定调用的去向,然后相应地修改请求。
另外:确保这些劫持被称为 FIRST,在任何其他 javascript 之前。