7

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

弃用通知:jqXHR.success()、jqXHR.error() 和 jqXHR.complete() 回调将在 jQuery 1.8 中弃用。要为最终删除准备代码,请改用 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');
      }
    });

?

4

2 回答 2

10

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

$.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');
});
于 2013-07-17T11:07:27.020 回答
4

我知道这是一个老问题,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 文档了解如何解决此问题。您只需分别重命名为done()fail()always(),或根据我的第一个代码块重写代码。

于 2018-10-11T14:35:04.937 回答