对于新的jQueryAjax代码,我是否应该使用.do()和.false(),而不是成功和错误?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (73)

我有这样的代码:

$.ajax({ cache: false,
    url: "/Admin/Contents/GetData",
    data: { accountID: AccountID },
    success: function (data) {
        $('#CityID').html(data);
    },
    error: function (ajaxContext) {
        alert(ajaxContext.responseText)
    }
});

但是当我看到最后的jQuery .ajax()文档时,似乎表明我应该像下面这样编码,或者至少它建议添加a .done()和a .fail()

var request = $.ajax({ cache: false,
    url: "/Admin/Contents/GetData",
    data: { accountID: AccountID }
});

request.done(function (data) {
    xxx;
});
request.fail(function (jqXHR, textStatus) {
    xxx;
});
提问于
用户回答回答于

弃用声明: jqXHR.success(),jqXHR.error()和jqXHR.complete()回调将在jQuery 1.8中被弃用。要准备代码以便最终删除它们,请改用jqXHR.done(),jqXHR.fail()和jqXHR.always()。

如果使用的是回调处理函数(使用链式方法调用为例),使用.done().fail().always()代替success()error()complete()

用户回答回答于

使用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 */

});

扫码关注云+社区