如何判断哪个ajax请求失败?

时间:2016-03-30 17:47:16

标签: javascript jquery ajax

我有这个代码块通过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()处理程序,以便我可以确定哪个请求失败了?

2 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:1)

另一种选择是写入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;