我应该使用.done()和.fail()为新的jQuery AJAX代码,而不是成功和错误
我有这样的编码:
$.ajax({ cache: false, url: "/Admin/Contents/GetData", data: { accountID: AccountID }, success: function (data) { $('#CityID').html(data); }, error: function (ajaxContext) { alert(ajaxContext.responseText) } });
但是,当我看到最后的jQuery .ajax()
文档似乎build议我应该这样编码,至less它build议添加一个.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; });
如user2246674所述,使用success
和error
作为ajax函数的参数是有效的。
为了与先例答案一致,阅读文档:
弃用声明 :
在jQuery 1.8中,jqXHR.success(),jqXHR.error()和jqXHR.complete()callback将被弃用。 要准备好代码以便最终删除它们,请改用jqXHR.done(),jqXHR.fail()和jqXHR.always()。
如果使用callback操作函数(例如使用方法链),请使用.done()
.fail()
和.always()
而不是success()
, error()
和complete()
。
我想在@Michael Laffargue的post上添加一些内容:
jqXHR.done()
更快!
jqXHR.success()
在callback中有一些加载时间,有时可能会矫枉过正脚本。 我在之前很难find。
更新:
使用jqXHR.done()
, jqXHR.fail()
和jqXHR.always()
你可以更好地处理一个Ajax请求。 一般来说,您可以在某些variables或对象中定义ajax,并在代码的任何部分使用该variables或对象,并更快地获取数据。 很好的例子:
/* 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 */ });
简而言之,
$.ajax("info.txt").done(function(data) { alert(data); }).fail(function(data){ alert("Try again champ!"); });
如果它获得info.text,那么它会提醒和无论你添加的function,或者如果有任何不能从服务器检索info.text然后警报或错误的function。