微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将Ajax错误结果与原始请求相关联?

我使用jQuery ajax函数以小突发发送数据到服务器.每个数据块都是一个简单的键值映射(传递给ajax函数的data属性).

如果请求失败,我的错误事件处理程序如何识别哪些特定数据集无法上载?

jQuery错误处理程序的函数签名是:

error(XMLHttpRequest,textStatus,errorThrown)

textStatus或errorThrown似乎都不能用于识别失败的数据集,而XHR似乎也没有提供这种能力.

简单地说,如果请求失败,我希望能够获取传递给ajax函数的数据的id属性.我怎样才能做到这一点?

解决方法

检查 this …从文档中 – 注意突出显示的部分:

The beforeSend,error,dataFilter,success and complete options all take callback functions that are invoked at the appropriate times. The this object for all of them will be the object in the context property passed to $.ajax in the settings; if that was not specified it will be a reference to the Ajax settings themselves.

因此,在error()回调(也是成功和完成等)中,这将是传递给$.ajax()的对象 – 除非您使用context参数来更改它.

注意,传入$.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

See this fiddle for an example – 请注意,其中的数据是“id = 1”,因为我们持有的数据仍为{id:1}

另外 – 注意这里的闭包((function(){….})())几乎没必要,它只是显示了一种方法来存储数据变量,然后将它传递到$.ajax()和使用它在回调中.很可能这个ajax调用已经存在于你可以做到这一点的函数中.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐