我的代码是这样的:
$.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;
});
发布于 2012-06-07 20:35:01
正如user2246674所说的,使用success
和error
作为ajax函数的参数是有效的。
为了与先例答案一致,请阅读文档:
弃用通知:
jqXHR.success()、jqXHR.error()和jqXHR.complete()回调在jQuery 1.8中将被弃用。要为最终删除它们的代码做好准备,请改用jqXHR.done()、jqXHR.fail()和jqXHR.always()。
如果使用回调操作函数(例如使用方法链接),请使用.done()
、.fail()
和.always()
,而不是success()
、error()
和complete()
。
发布于 2016-12-21 17:16:12
我想在@Michael Laffargue的帖子上添加一些东西:
jqXHR.done()
更快!
jqXHR.success()
在回调中有一些加载时间,有时可能会过度杀死脚本。我以前发现这很难。
更新:
使用jqXHR.done()
、jqXHR.fail()
和jqXHR.always()
,您可以更好地处理ajax请求。通常,您可以在一些变量或对象中定义ajax,并在代码的任何部分使用该变量或对象,从而更快地获取数据。一个很好的例子:
/* Initialize some your AJAX function */
function call_ajax(attr){
var settings=$.extend({
call : 'users',
option : 'list'
}, attr );
return $.ajax({
type: "POST",
url: "//exapmple.com//ajax.php",
data: settings,
cache : false
});
}
/* .... Somewhere in your code ..... */
call_ajax({
/* ... */
id : 10,
option : 'edit_user'
change : {
name : 'John Doe'
}
/* ... */
}).done(function(data){
/* DO SOMETHING AWESOME */
});
发布于 2017-03-18 05:20:28
简而言之
$.ajax("info.txt").done(function(data) {
alert(data);
}).fail(function(data){
alert("Try again champ!");
});
如果它得到了info.text,那么它就会发出警报,无论你添加了什么函数,或者如果有任何函数,如何无法从服务器检索info.text,那么它就会发出警报或错误函数。
https://stackoverflow.com/questions/10931836
复制相似问题