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

问题

  1. 我们应该如下改变我们的编码吗?
  2. .done()success: ,. .fail()error:.always()complete:之间有区别吗?

序言

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

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

在快速浏览某些文档时,我遇到了一个参考文献,指出成功,错误和完整的callback在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"); }); 

那么在这种特殊情况下做这件事没有什么好处。

.done() .fail() .always()方法的意义在于你可以

  1. 附加多个处理程序
  2. 在任何地方这样做,而不是只是在调用$.ajax

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

所以你可以回报这个承诺,而其他人可以附上自己的处理程序。

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

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