每个Ajax请求的新Ajax请求onComplete

时间:2011-08-10 16:38:48

标签: ajax prototypejs

我正在使用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

2 个答案:

答案 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,如果来自自己,则会中止。