如何判断哪个ajax请求失败

How to tell which ajax request failed?

本文关键字:ajax 请求 失败 何判断 判断      更新时间:2023-09-26

我有这个代码块来通过jquery.post()方法发布HTTP请求。

$.post("/product/update", formPostData)
.done(function (data) {
    // success
    alert(data.product_id + ' was updated!');
})
.fail(function (data) {
    // fail, but which request?
});

当它成功时,很容易知道我们正在处理哪个请求,因为服务器返回的json具有我需要的'product_id'

但是,如果它由于服务器没有响应的错误而失败,例如连接问题,我如何判断哪个请求失败了?

data对象没有线索,因为它只包含服务器响应。

如何将值传递给.fail()处理程序,以便确定哪个请求失败?

this对象在这里很有用。你应该能够解析this.data并从那里获得你的帖子信息:

.fail(function (jqXHR, textStatus, errorThrown) {
    console.log(this.data);
});

另一种选择是写入XHR对象本身,然后它在fail方法中为您提供,不需要使用闭包:

var obj = { a: 1 };
var xhr = $.post("/product/update", obj)
   .done(function (data) {})
   .fail(function (jqXHR, textStatus, errorThrown) {
        console.log(this.data); // The raw string a=1 which was posted
        console.log(jqXHR.postData); // The {a: 1} javascript object
   });
xhr.postData = obj;