加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 02:51:52 所属栏目:百科 来源:网络整理
导读:我使用jQuery ajax函数以小突发发送数据到服务器.每个数据块都是一个简单的键值映射(传递给ajax函数的data属性). 如果请求失败,我的错误事件处理程序如何识别哪些特定数据集无法上载? jQuery错误处理程序的函数签名是: error(XMLHttpRequest,textStatus,er
我使用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调用已经存在于你可以做到这一点的函数中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读