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