Ton*_*ony 4 ajax jquery xmlhttprequest
我使用jQuery ajax函数以小突发发送数据到服务器.每个数据块都是一个简单的键值映射(data传递给ajax函数的属性).
如果请求失败,我的错误事件处理程序如何识别哪些特定数据集无法上载?
jQuery错误处理程序的函数签名是:
error(XMLHttpRequest, textStatus, errorThrown)
Run Code Online (Sandbox Code Playgroud)
识别失败的数据集既没有textStatus或errorThrown似乎有用,XHR似乎也没有提供这种能力.
简单地说,如果请求失败,我希望能够获得我传递给函数的id属性.我怎样才能做到这一点?dataajax
检查this......从文档中 - 注意突出显示的部分:
在
beforeSend,error,dataFilter,success和complete选项都采取在适当的时候调用回调函数.this所有这些对象都将是设置中context传递给的属性中的对象$.ajax; 如果没有指定,那么它将是对Ajax设置本身的引用.
因此,在error()回调(也success和complete等)中,this将是传递给的对象$.ajax()- 除非您使用context参数来更改它.
作为注释,data传入的参数$.ajax()将转换为GET或POST请求的序列化字符串
另一个选择是确保您的error()回调可以访问同一范围内的变量:
(function() {
// create a scope for us to store the data:
var data = {id: 1};
$.ajax({
url: '/something-to-genereate-error',
data: data,
error: function() {
console.log(this, data);
}
});
})(); // call the function immediatey
Run Code Online (Sandbox Code Playgroud)
看到这个捣鼓一个例子 -请注意,data里面this就是"id=1"wereas在data我们召开的副本仍然是{id:1}
另外 - 注意这里的闭包((function() { .... })())几乎是不必要的,它只是显示了一种data在传递变量之前存储变量的方法$.ajax()以及在回调中使用变量.很可能这个ajax调用已经存在于你可以做到这一点的函数中.