gpt4 book ai didi

javascript - 如何区分用户中止的调用和错误(jquery 文件上传)

转载 作者:行者123 更新时间:2023-11-28 00:18:53 26 4
gpt4 key购买 nike

我正在使用 jQuery 文件上传插件

this.manualPostData.submit().
done(function(data, textStatus, jqXHR) {
FSUtils.smartSuccess({
content: Localize.tt('msg.uploadfile'),
timeout: 6000
});

}).
fail(function(jqXHR, textStatus, errorThrown) {
FSUtils.smartError({
content: JSON.parse(jqXHR.responseText).msgDesc,
timeout: 6000
});
}

我的场景是,当我调用文件对象的 .submit() 时,它将向服务器发送请求,并且文件将成功上传,但如果用户单击取消按钮上传时间然后我取消我的服务器请求,它由 .fail() 处理。

我如何知道请求是否被用户中止?当请求失败时,jqXHR 参数有数据,但是当用户取消请求时,jqXHR 参数未定义,因此如何处理以及如何检查它是否存在被用户中止

我使用这两行取消服务器请求

 this.manualPostData.abort()
this.manualPostData = null

最佳答案

The trick is to check the response headers in the XMLHttpRequest object. If there are no response headers (null or empty string, depending on the browser), the server did not respond yet. That means the user aborted.

这是一个函数,它接受 XMLHttpRequest 并告诉您用户是否中止它。

function userAborted(jqXHR) {
return !jqXHR.getAllResponseHeaders();
}

现在在您的.fails回调中调用这个userAborted函数

.fail(function(jqXHR, textStatus, errorThrown) {
if (!userAborted(jqXHR)) {
alert('Normal Fail');
}else{
alert('User Aborted');
}
}

您不能使用 textStatuserrorThrown 来判断用户是否中止。无论用户中止还是服务器返回错误,它们都会返回相同的值。

(I only tested a 500 error.)

关于javascript - 如何区分用户中止的调用和错误(jquery 文件上传),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30209760/

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