jQuery弃用通知jqxhr.success()

suh*_*lvs 5 jquery

我最近在jQuery网站上看到了一个弃用通知.

弃用注意:jQuery 1.8中不推荐使用jqXHR.success(),jqXHR.error()和jqXHR.complete()回调.要准备最终删除的代码,请使用jqXHR.done(),jqXHR.fail()和jqXHR.always().


我目前编码如下:

$.ajax({
  url: '...',
  success: function(){
    alert('AJAX successful');
  }
});
Run Code Online (Sandbox Code Playgroud)

我打算使用jQuery 1.8+

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

$.ajax({
      url: '...',
      done: function(){
        alert('AJAX successful');
      }
    });
Run Code Online (Sandbox Code Playgroud)

Dev*_*One 6

例如,如果您具有以下任何一项:

$.ajax({url: '...'}).success(function(){
    alert('AJAX successful');
});
$.ajax({url: '...'}).error(function(){
    alert('AJAX ERROR');
});
$.ajax({url: '...'}).complete(function(){
    alert('AJAX complete');
});
Run Code Online (Sandbox Code Playgroud)

您必须将其更改为:

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


cha*_*eda 5

我知道这是一个老问题,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);                    
    }
});
Run Code Online (Sandbox Code Playgroud)

这在 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
});
Run Code Online (Sandbox Code Playgroud)

请参阅 @DevIshOne 的答案或jQuery AJAX 文档,了解如何解释这一点。您只需分别重命名为done()fail()、 和always(),或者按照我的第一个代码块重写代码。