首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解jQuery的jqXHR

理解jQuery的jqXHR
EN

Stack Overflow用户
提问于 2011-10-04 02:05:42
回答 3查看 31.6K关注 0票数 11

我有一组$.get()请求,需要重构以包含失败回调。请求的格式为

代码语言:javascript
复制
$.get(url,
      {},
      function(data) {//success, do work
      //work
      },'json');//or 'html'

根据jQuery API,我只需添加一个jqHXR对象。所以就我而言,我认为我应该

代码语言:javascript
复制
var jqxhr =  $.get(url,
          {},
          function(data) {//success, do work
          //work
          },'json').error(function() { alert("error"); });//or 'html'

我不明白the example中第二次成功回调的原因。我想它可能是用来设置回调链的。我希望error在错误中执行,而success在成功时执行。那么,这是正确的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-04 02:12:06

我认为示例中的第二个成功回调只是为了说明,使用此语法,您可以为successerrorcomplete事件提供多个处理程序。在标准的jQuery .ajax()方法中,您只能为每个事件分配一个处理程序。我不能随便想出一个需要多个处理程序的示例,但它确实看起来更清晰,更像标准的jQuery习惯用法

代码语言:javascript
复制
$.get('my_url.php')
    .success(handlerOne)
    .success(handlerTwo);

而不是

代码语言:javascript
复制
$.get('my_url.php', function(data, textStatus, jqXHR) {
    handlerOne(data, textStatus, jqXHR);
    handlerTwo(data, textStatus, jqXHR);
});

但是,在您的例子中,只将$.get()语句转换为$.ajax()可能会更简单、更简洁。大多数jQuery程序员可能更熟悉$.ajax()语法,而且由于您不需要其他语法中提供的特殊功能(多个处理程序、请求后处理程序赋值),所以没有理由不使用$.ajax()

代码语言:javascript
复制
$.ajax({
    url: url,
    success: function(data) {
        // success, do work
    },
    error: function(data) {
        // error, handle failure
    },
    dataType:'json'
});
票数 16
EN

Stack Overflow用户

发布于 2013-05-11 02:00:41

这个页面有很多关于jqXHR (jQuery XHR)与XHR (XMLHttpRequest)区别的文档。

http://api.jquery.com/jQuery.ajax/#jqXHR

票数 4
EN

Stack Overflow用户

发布于 2011-10-04 02:14:42

您正在使用的代码应该没有问题。第二次成功只是您可以定义成功方法的另一个地方。有些人使用jqxhr成功,而不是传递给$.get()的成功,还有一些人使用延迟对象的done处理程序来做同样的事情。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7638847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档