jQuery弃用通知jqxhr.success()

时间:2013-07-17 11:01:14

标签: jquery

我最近在jQuery网站上看到了弃用通知。

  

弃用通知:jqXHR.success(),jqXHR.error()和   在jQuery 1.8中不推荐使用jqXHR.complete()回调函数。至   为最终删除代码做好准备,使用jqXHR.done(),   jqXHR.fail()和jqXHR.always()代替。


我目前编码如下:

$.ajax({
  url: '...',
  success: function(){
    alert('AJAX successful');
  }
});

我打算使用jQuery 1.8 +

我是否应该将success密钥更改为done为:

$.ajax({
      url: '...',
      done: function(){
        alert('AJAX successful');
      }
    });

2 个答案:

答案 0 :(得分:4)

例如,如果你有以下任何一个:

$.ajax({url: '...'}).success(function(){
    alert('AJAX successful');
});
$.ajax({url: '...'}).error(function(){
    alert('AJAX ERROR');
});
$.ajax({url: '...'}).complete(function(){
    alert('AJAX complete');
});

您必须将其更改为:

$.ajax({url: '...'}).done(function(){
    alert('AJAX successful');
});
$.ajax({url: '...'}).fail(function(){
    alert('AJAX ERROR');
});
$.ajax({url: '...'}).always(function(){
    alert('AJAX complete');
});

答案 1 :(得分:2)

我知道这是一个老问题,而jQuery 1.8早已问世-但是为了帮助像我这样将古老的应用程序升级到3.0的Google员工,我想澄清一下。

这在jQuery 1.8+版本中有效:

$.ajax({
    url: "/api/endpoint",
    type: "POST",
    data: myData,
    success: function(json){
        console.log("success");
        console.log(json);
    error: function(jqxhr){
        console.log("failure");
        console.log(jqxhr.responseText);                    
    }
});

这在jQuery 1.8+版本中无效。在3.0中已将其删除:

var promise = $.ajax({
    url: "/api/endpoint",
    data: myData,
    method: "POST"
});

promise.success(function(json){
    console.log("function not defined!"); // same for .error and .complete
});

有关如何解决此问题的信息,请参见@DevIshOne的答案或jQuery AJAX documentation。您只需要分别重命名为done()fail()always(),或按照我的第一个代码块来重写代码。