理解jQuery的jqXHR

P.B*_*key 8 javascript jquery

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

$.get(url,
      {},
      function(data) {//success, do work
      //work
      },'json');//or 'html'
Run Code Online (Sandbox Code Playgroud)

根据jQuery API,我只需添加一个jqHXR对象.所以在我的情况下,我相信我应该这样做

var jqxhr =  $.get(url,
          {},
          function(data) {//success, do work
          //work
          },'json').error(function() { alert("error"); });//or 'html'
Run Code Online (Sandbox Code Playgroud)

我不明白示例中第二次成功回调的原因.我想它可以用于建立一个回调链.我希望错误执行错误,并成功执行成功.那么,这是正确的吗?

nra*_*itz 13

我觉得在这个例子中的第二个成功回调只是为了说明,使用此语法,你可以有多个处理程序success,errorcomplete事件.在标准jQuery .ajax()方法中,您只能为每个事件分配一个处理程序.我无法想象一个需要多个处理程序的例子,但它确实看起来更清晰,更像是使用标准的jQuery习惯用法

$.get('my_url.php')
    .success(handlerOne)
    .success(handlerTwo);
Run Code Online (Sandbox Code Playgroud)

代替

$.get('my_url.php', function(data, textStatus, jqXHR) {
    handlerOne(data, textStatus, jqXHR);
    handlerTwo(data, textStatus, jqXHR);
});
Run Code Online (Sandbox Code Playgroud)

但是,在您的情况下,将$.get()语句转换为更简单,更简洁$.ajax().该$.ajax()语法可能是最jQuery的程序员更熟悉,因为你不需要特殊的功能(多个处理程序,请求处理后分配)中的其他语法可用,没有理由不只是使用$.ajax():

$.ajax({
    url: url,
    success: function(data) {
        // success, do work
    },
    error: function(data) {
        // error, handle failure
    },
    dataType:'json'
});
Run Code Online (Sandbox Code Playgroud)

  • 我发现像你这样明确的解释往往是罕见的.API文档和官方网站倾向于深入了解有关所有内容的极端细节,但它们并没有明确强调实用性或推荐选项.他们也倾向于提供抽象,没有足够的地面的例子. (3认同)