我有这样的编码:
$.ajax({ cache: false,
url: "/Admin/Contents/GetData",
data: { accountID: AccountID },
success: function (data) {
$('#CityID').html(data);
},
error: function (ajaxContext) {
alert(ajaxContext.responseText)
}
});
但是,当我看到jQuery .ajax()
documentation的结尾时,它似乎建议我应该像下面这样编写代码,或者至少它建议添加一个.done()
和一个.fail()
:
var request = $.ajax({ cache: false,
url: "/Admin/Contents/GetData",
data: { accountID: AccountID }
});
request.done(function (data) {
xxx;
});
request.fail(function (jqXHR, textStatus) {
xxx;
});
更新
如果我像这样编码,它是一样的,还是把它分成三个有什么好处?
$.ajax({ cache: false,
url: "/Admin/Contents/GetData",
data: { accountID: AccountID }
}).done(function (data) {
xxx;
}).fail(function (jqXHR, textStatus) {
xxx;
});
4条答案
按热度按时间nr9pn0ug1#
如user2246674所述,使用
success
和error
作为 AJAX 函数的参数是有效的。为了与先例回答保持一致,阅读doc:
弃用通知:
在jQuery 1.8中,jqXHR.success()、jqXHR.error()和jqXHR.complete()回调将被弃用。要准备代码以备最终删除它们,请改用jqXHR.done()、jqXHR.fail()和jqXHR.always()。
如果使用回调操作函数(例如,使用方法链),请使用
.done()
、.fail()
和.always()
,而不要使用success()
、error()
和complete()
。pjngdqdw2#
我想在@Michael Laffargue的帖子上添加一些内容:
jqXHR.done()
更快!jqXHR.success()
在回调中有一些加载时间,有时会过度破坏脚本。我发现以前很难做到。更新日期:
使用
jqXHR.done()
,jqXHR.fail()
和jqXHR.always()
,你可以更好地处理 AJAX 请求。一般来说,你可以在某个变量或对象中定义ajax,然后在代码的任何部分使用该变量或对象,从而更快地获取数据。很好的例子:9q78igpj3#
简而言之
如果它得到了info.text,那么它将报警,无论你添加什么功能,或者如果有任何无法从服务器检索info.text,那么报警或错误功能。
jc3wubiy4#
当我们在旧的现有应用程序中从1.x迁移到jQuery 2.x或3.x时,我们将使用.done、.fail而不是success、error,因为jQuery将弃用这些方法。( AJAX 方法)这些promise对象包含.done、.fail等方法。因此,我们将对成功和失败响应执行相同的操作。下面是一个示例(对于POST请求,我们可以使用与GET...等请求类型相同的方法构造请求类型):