我正在使用Prototype 1.7,我想要的是在每个Ajax请求上运行一个新的Ajax Request onComplete。但我不希望Ajax请求在第二次请求时运行。
像这样:
AJAX请求(请求#1)
+ - 运行请求onComplete onComplete of Request#1(Request#2)
+ ----不要运行请求onComplete of Request#2 < / p>
AJAX请求(请求#3)
+ - 请求#3的请求完成请求(请求#4)
+ ----不要在请求#4的完成上运行请求
我知道我可以这样做:
Ajax.Responders.register({
onCreate: function() {
},
onComplete: function() {
new Ajax.Request('/update_active.php');
},
onUninitialized: function () {
},
});
问题是上面创建了一个无限循环的Ajax请求。
有人对如何做到这一点有任何建议吗?
谢谢, -David
答案 0 :(得分:1)
您可以在响应者调用的ajax请求上设置自定义选项属性,然后在发送下一个请求之前检查该属性:
Ajax.Responders.register({
onComplete: function(transport) {
if( typeof transport.options.isResponder !== 'undefined' ) {
return; // don't start a new request if the custom option is set
};
// set the custom option so this request won't trigger another one
new Ajax.Request('url', {
isResponder: true
});
}
});
您只需要为响应者触发的请求设置选项。所有其他请求可以保持不变
答案 1 :(得分:0)
您可以查看请求的callee,如果来自自己,则会中止。