jQuery ajax()使用成功,错误和完成与.done(),.fail()和always()
问题 :
- 我们应该如下改变我们的编码吗?
-
.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()
方法的意义在于你可以
- 附加多个处理程序
- 在任何地方这样做,而不是只是在调用
$.ajax
如果您只在$.ajax
调用站点上附加单个处理程序,那么这些优势并不真正起作用。
所以你可以回报这个承诺,而其他人可以附上自己的处理程序。
示例是在ajax请求之后刷新插件:
$.ajaxPrefilter(function(opt, origOpt, jqxhr) { jqxhr.always(function() { $("[data-plugin]").plugin(); }); });