我应该使用哪一个?
有没有理由使用其中一个而不是另一个?
有没有更好的错误处理方法?
$.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
}
});
发布于 2012-11-01 06:51:27
这两个选项是等效的。
但是,promise样式的接口(.fail()
和.done()
)允许您将创建请求的代码与处理响应的代码分开。
您可以编写一个发送AJAX请求并返回jqXHR对象的函数,然后在其他地方调用该函数并添加一个处理程序。
当与.pipe()
函数结合使用时,promise风格的界面还可以帮助减少进行多个AJAX调用时的嵌套:
$.ajax(...)
.pipe(function() {
return $.ajax(...);
})
.pipe(function() {
return $.ajax(...);
})
.pipe(function() {
return $.ajax(...);
});
发布于 2018-04-01 21:56:36
使用chainable deferred object promise样式可以使结构更整洁,并可以使用always。
let data = {"key":"value"}
$.ajax({
type: 'PUT',
url: 'http://example.com/api',
contentType: 'application/json',
data: JSON.stringify(data),
}).done(function () {
console.log('SUCCESS');
}).fail(function (msg) {
console.log('FAIL');
}).always(function (msg) {
console.log('ALWAYS');
});
https://stackoverflow.com/questions/13168572
复制相似问题