首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用success、error和complete的jQuery ajax()与.done()、.fail()和always()

使用success、error和complete的jQuery ajax()与.done()、.fail()和always()
EN

Stack Overflow用户
提问于 2013-08-16 09:02:53
回答 1查看 97.1K关注 0票数 78

The questions

  1. 我们应该按照下面的建议更改我们的编码吗?
  2. .done() & success:.fail() & error:.always() &.always()之间有区别吗?

前同步码

我正在编写一个jQuery.ajax调用,我在过去也成功地完成了这个调用。如下所示:

代码语言:javascript
复制
    $.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()。

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

代码语言:javascript
复制
$.ajax( "example.php" )
    .done(function (data) { someSuccessFunction(data); })
    .fail(function (jqXHR, textStatus, errorThrown) { someErrorFunction(); })
    .always(function() { alert("complete"); });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-16 09:23:56

在这种特殊情况下,这样做是没有好处的。

.done() .fail() .always()方法的要点在于,您可以

  1. Attach multiple handlers
  2. 在任何地方都可以连接多个处理程序,而不仅仅是在调用just时

如果您在$.ajax调用站点上只附加了单个处理程序,那么这些优势就不会真正发挥作用。

所以你可以返回promise,其他人可以附加他们自己的处理程序。

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

代码语言:javascript
复制
$.ajaxPrefilter(function(opt, origOpt, jqxhr) {
    jqxhr.always(function() {
        $("[data-plugin]").plugin();
    });
});
票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18264237

复制
相关文章

相似问题

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