调用jquery ajax – .fail vs.:error

我应该使用哪一个?

有没有任何理由使用一个,而不是另一个?

是一个更好的error handling?

$.ajax({ url: url, data: { start: start, end: end } }).done(function(data, textStatus, jqXHR) { $('#myElement').append(data); }).fail(function() { // report error }); 

要么

 $.ajax({ url: url, data: { start: start, end: end }, success: function(data, textStatus, jqXHR) { $('#myElement').append(data); }, error: function(jqXHR, textStatus, errorThrown) { // report error } }); 

这两个选项是相同的。

但是,承诺风格的接口( .fail().done() )允许您从处理响应的代码中分离创build请求的代码。

你可以编写一个函数发送一个AJAX请求并返回jqXHR对象,然后在其他地方调用该函数并添加一个处理程序。

当与.pipe()函数结合使用时,在进行多个AJAX调用时,promise风格的接口也可以帮助减less嵌套:

 $.ajax(...) .pipe(function() { return $.ajax(...); }) .pipe(function() { return $.ajax(...); }) .pipe(function() { return $.ajax(...); }); 

只是为了清新这个…

从jQuery 1.8开始,成功和错误的方法已经被弃用了。

jQuery的Ajax

弃用通知:自jQuery 1.8起,弃用jqXHR.success(),jqXHR.error()和jqXHR.complete()callback。 要准备好代码以便最终删除它们,请改用jqXHR.done(),jqXHR.fail()和jqXHR.always()。