原型Ajax.Updater在更新之前评估字符串

时间:2013-03-26 21:04:48

标签: javascript ajax prototypejs

这是我的代码:

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之类的其他黑客并仅在没有匹配的情况下显示它?

1 个答案:

答案 0 :(得分: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方法