我应该使用哪一个?
是否有任何理由使用一种而不是另一种?
错误处理更好吗?
$.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 } });
这两个选项是等效的。
但是,promise风格的接口(.fail()和.done())使您可以将创建请求的代码与处理响应的代码分开。
.fail()
.done()
您可以编写一个发送AJAX请求并返回jqXHR对象的函数,然后在其他地方调用该函数并添加一个处理程序。
当与该.pipe()功能结合使用时,promise风格的接口还可以在进行多个AJAX调用时帮助减少嵌套:
.pipe()
$.ajax(...) .pipe(function() { return $.ajax(...); }) .pipe(function() { return $.ajax(...); }) .pipe(function() { return $.ajax(...); });