jQuery ajax()使用成功,错误和完整vs .done(),. fail()和always()

时间:2013-08-16 01:02:53

标签: javascript ajax jquery

问题

  1. 我们是否应该按照以下建议更改编码?
  2. .done()&之间是否存在差异success:.fail()& error:.always()& complete:
  3. 序言

    我正在整理一个jQuery.ajax调用,这也是我过去成功完成的。像这样:

        $.ajax(
        {
            url: someUrl,
            type: 'POST',
            data: someData,
            datatype: 'json',
            success: function (data) { someSuccessFunction(data); },
            error: function (jqXHR, textStatus, errorThrown) { someErrorFunction(); }
        });
    

    在快速浏览一些文档的同时,我遇到了一个引用,指出从jQuery 1.8开始,不推荐使用成功,错误和完整回调。要准备最终删除的代码,请改用jqXHR.done(),jqXHR.fail()和jqXHR.always()。

    因此我们应该开始编写类似这样的代码:

    $.ajax( "example.php" )
        .done(function (data) { someSuccessFunction(data); })
        .fail(function (jqXHR, textStatus, errorThrown) { someErrorFunction(); })
        .always(function() { alert("complete"); });
    

1 个答案:

答案 0 :(得分:36)

在那种特殊情况下没有优势。

.done() .fail() .always()方法的要点是你可以

  1. 附加多个处理程序
  2. 在任何地方都这样做,而不仅仅是在致电$.ajax
  3. 如果您在$.ajax呼叫站点只附加单个处理程序,那么这些优势并没有真正发挥作用。

    所以你可以回复承诺,其他人可以附上他们自己的处理程序。

    示例是在ajax请求后刷新插件:

    $.ajaxPrefilter(function(opt, origOpt, jqxhr) {
        jqxhr.always(function() {
            $("[data-plugin]").plugin();
        });
    });