例如:
$.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
被替换为done
,error
替换为fail
,complete
替换为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 或其他任何内容绑定。请注意,始终是一个回调,无论请求成功还是失败,都将运行。完成只会在成功时触发。