gpt4 book ai didi

javascript - 在请求期间修改 jQuery $.ajax() success 方法

转载 作者:行者123 更新时间:2023-11-28 10:35:17 25 4
gpt4 key购买 nike

在我正在开发的网络应用程序中,可能会出现长时间运行的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com