在我正在开发的网络应用程序中,可能会出现长时间运行的 ajax 查询。
我正在使用 jQuery 的 $.ajax 方法来执行以下操作:
this._xhr = jQuery.ajax({
type: "GET",
url: "/path/to/service",
data: "name=value",
success: function(data, message){
// handle a success
},
dataType: "json"
});
有没有办法修改 this._xhr.readyState = 2(已加载)之后和 this._xhr.readyState = 4(已完成)之前的成功回调
我尝试修改this._xhr.onreadystatechange,但发现jQuery没有定义onreadystatechange。
最佳答案
abort
方法听起来对我来说是最好的选择。
我对ajax
方法内部了解不多,但我可以想出几种方法来完成你想要的事情。两者都涉及全局状态,并且如果您的用户有可能在第一个请求完成之前发送第二个请求,则会中断,因此我不确定是否推荐它们。
首先,您可以保留对成功运行的方法的引用,并更改它:
MySuccessMethod = function(d, m) { /* handle a success */ };
this._xhr = jQuery.ajax({
type: "GET",
url: "/path/to/service",
data: "name=value",
success: function(data, message){ MySuccessMethod(data, message); },
dataType: "json"
});
// later...
// user cancels request, so change the success method
MySuccessMethod = function(d, m) { /*print a simple message*/ }
或者,您可以将所有逻辑放入一个成功方法中,并使用全局标志来确定要执行的操作:
success: function(data, message){
if (RequestHasBeenCancelled) {
//display a simple message
}
else {
// handle a success
}
},
关于javascript - 在请求期间修改 jQuery $.ajax() success 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1406960/