在 $.ajax 中 done() 方法而不是 success() 有什么优点?

  • 本文关键字:success ajax done 方法 jquery ajax
  • 更新时间 :
  • 英文 :


例如:

$.ajax({
url: '@Url.Action("_sampleMethod","Sample")',
type: 'GET',
cache: false,
}).done(function (result) {
// ...
});

当有一系列多个 Ajax 调用并且一个等待另一个完成回调时,done()方法很有用。因此,只有在 Ajax 调用 A 完成后,您才能在done()中执行您的 Ajax 代码。虽然success()主要是单个Ajax调用的一部分,可帮助您根据需要处理响应。

success仅在 AJAX 调用成功时触发,即最终返回 HTTP 200 状态。error失败时触发,请求完成时complete,无论是否成功。

在jQuery 1.8中jqXHR对象(由$.ajax返回)success被替换为doneerror替换为failcomplete替换为always。

但是,您仍然应该能够使用当前语法初始化 AJAX 请求。所以这些做类似的事情:

// set success action before making the request
$.ajax({
url: '...',
success: function(){
alert('AJAX successful');
}
});
// set success action just after starting the request
var jqxhr = $.ajax( "..." )
.done(function() { alert("success"); });

我认为此更改是为了与jQuery 1.5的新延迟对象兼容。

你的代码格式不好,但无论如何我都会试一试。

done() 会触发你的函数,而不管 ajax 请求是否成功。

success() 仅在 ajax 请求成功时触发函数。

成功是jQuery中成功回调的传统名称,定义为ajax调用中的一个选项。但是,由于实现了$。延迟回调和更复杂的回调,完成是实现成功回调的首选方法,因为它可以在任何延迟的成功示例中调用

$.ajax({
url: '/',
success: function(data) {}
});

完成示例

$.ajax({url: '/'}).done(function(data) {});

完成的好处是 $.ajax 的返回值现在是一个延迟承诺,可以绑定到应用程序中的任何其他位置。因此,假设您想从几个不同的地方进行此 ajax 调用。与其将成功函数作为选项传递给进行此 ajax 调用的函数,不如让函数返回 $.ajax 本身,并将回调与 done、fail、then 或其他任何内容绑定。请注意,始终是一个回调,无论请求成功还是失败,都将运行。完成只会在成功时触发。

最新更新