0

这是我的代码:

new Ajax.Updater('container', url, {
    method: "get",
    onLoading: function () {
        document.getElementById('container').innerHTML = "Loading...";
    },
    on200: function(response) {
        if(response.responseText.match(/WhatImLookingFor/)) {
            window.location = "leNewURL";
        }
    },
    onComplete: function(response) {
        //do other cool stuff
    }
});

我想要做的是在container更新之前拦截响应,如果响应中的文本匹配WhatImLookingFor,我想将用户重定向到leNewURL. 上面的代码正在发生这种情况,但不是在更新之前,所以它看起来很古怪。无论如何我可以在更新发生之前拦截,还是我必须求助于其他黑客,比如隐藏container并只有在没有匹配的情况下才显示它?

4

1 回答 1

1

如果您想像这样自定义 Ajax 调用的行为,我建议您使用基础Ajax.Request() http://api.prototypejs.org/ajax/Ajax/Request/

new Ajax.Request(url, {
    method: "get",
    onLoading: function () {
        $('container').update("Loading...");
    },
    onComplete: function(response) {
        if(response.responseText.match(/WhatImLookingFor/)) {
            window.location = "leNewURL";
        }
        else {
            //do other cool stuff
            $('container').update(response.responseText);
        }
    }
});

document.getElementById()$()实用方法替换了它,因为它的类型更少,并且包括所有 PrototypeJS 的 Element 方法

于 2013-03-26T22:28:27.260 回答