这是我的代码:
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
之类的其他黑客并仅在没有匹配的情况下显示它?
答案 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方法