问题:
.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(); }
});
在快速浏览一些文档的同时,我遇到了一个引用,指出从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"); });
答案 0 :(得分:36)
在那种特殊情况下没有优势。
.done()
.fail()
.always()
方法的要点是你可以
$.ajax
如果您在$.ajax
呼叫站点只附加单个处理程序,那么这些优势并没有真正发挥作用。
所以你可以回复承诺,其他人可以附上他们自己的处理程序。
示例是在ajax请求后刷新插件:
$.ajaxPrefilter(function(opt, origOpt, jqxhr) {
jqxhr.always(function() {
$("[data-plugin]").plugin();
});
});