我需要构建一个功能到购物车,使用AJAX从服务器检索模板的更新副本时,有一些变化(例如,一个产品被删除)。首先,我不能修改服务器端代码,也不能修改使购物车工作的JavaScript。(我知道这并不理想,但事实就是如此)
我想做的是在购物车每次更新时运行我自己的JavaScript。我想知道是否可以监听AJAX调用,并在每次调用时运行我的代码。
发布于 2011-05-18 04:00:37
要遵循HTML文档上的所有AJAX调用,可以覆盖XMLHttpRequest
原型。这样,您就可以监视XMLHttpRequest
对象的方法上的操作。
下面是一小段示例代码:
var open = window.XMLHttpRequest.prototype.open,
send = window.XMLHttpRequest.prototype.send,
onReadyStateChange;
function openReplacement(method, url, async, user, password) {
var syncMode = async !== false ? 'async' : 'sync';
console.warn(
'Preparing ' +
syncMode +
' HTTP request : ' +
method +
' ' +
url
);
return open.apply(this, arguments);
}
function sendReplacement(data) {
console.warn('Sending HTTP request data : ', data);
if(this.onreadystatechange) {
this._onreadystatechange = this.onreadystatechange;
}
this.onreadystatechange = onReadyStateChangeReplacement;
return send.apply(this, arguments);
}
function onReadyStateChangeReplacement() {
console.warn('HTTP request ready state changed : ' + this.readyState);
if(this._onreadystatechange) {
return this._onreadystatechange.apply(this, arguments);
}
}
window.XMLHttpRequest.prototype.open = openReplacement;
window.XMLHttpRequest.prototype.send = sendReplacement;
在这个示例中,对于每个AJAX调用,在JavaScript控制台中都会有一个警告。
它不是jQuery脚本,但您可以根据需要在其中使用jQuery。
这个解决方案可能不会在IE6或更早的版本上工作,但它可以在FF,IE7+,Chrome,Opera,Safari...
发布于 2013-01-02 20:14:01
我更喜欢这个解决方案。
$(document).ajaxComplete(function(event,request, settings){
// Your code here
});
发布于 2015-09-25 13:50:45
我的朋友,你可以用Jquery很容易做到这一点(正如你所说的那样,你正在使用Jquery)
(对于那些没有使用的人,他们可以在ajax函数下驱动Jquery库代码来查看本机代码:') )
$(document).bind("ajaxSend", function(){
$("#loading").show();
}).bind("ajaxComplete", function(){
$("#loading").hide();
});
这是摘自jquery官方api文档的代码片段(请参阅全球事件部分)
https://stackoverflow.com/questions/4406606
复制相似问题