jQuery弃用通知:jqxhr.success()

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');
      }
    });

?


2
不需要,那些是内部选项,可以正常工作。废弃通知是针对 jqXHR 回调方法的。 - DevlshOne
谢谢。我要删除这个问题,还是这对某人有用? - suhailvs
2
我认为有人可能会觉得它很有用... - DevlshOne
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');
});

谢谢您的回答。然而,很难理解为什么.always可以替代.complete(从意义上来说)。 - Senura Dissanayake
1
@SenuraDissanayake 因为 .always 会在调用的状态(失败/成功)无论如何都会执行。 - DevlshOne

5

我知道这是一个老问题,而且jQuery 1.8版本已经发布很久了 - 但为了帮助像我这样将古老应用程序升级到3.0的谷歌用户,我想澄清一下。

以下内容适用于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(),或按照我的第一个代码块进行重写即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接