jQuery AJAX:为什么.error()方法不赞成使用.fail()?

时间:2014-05-18 22:45:22

标签: javascript jquery ajax

如果你看到链接here for .ajax(),他们会说:

  

jqXHR.fail(function(jqXHR,textStatus,errorThrown){});一个   错误回调选项的替代构造,.fail()方法   替换已弃用的.error()方法。请参阅deferred.fail()   实施细节。

为什么弃用.error()方法而不赞成.fail()

2 个答案:

答案 0 :(得分:2)

这两个选项是等效的。

但是,promise样式接口(.fail()和.done())允许您将创建请求的代码与处理响应的代码分开。

您可以编写一个发送AJAX请求并返回jqXHR对象的函数,然后在其他地方调用该函数并添加一个处理程序。

当与.pipe()函数结合使用时,promise样式接口还可以在进行多个AJAX调用时帮助减少嵌套:

$.ajax(...)
    .pipe(function() { 
        return $.ajax(...);
    })
    .pipe(function() { 
        return $.ajax(...);
    })
    .pipe(function() { 
        return $.ajax(...);
    });

答案 1 :(得分:0)

这实际上是在讨论deferred上的方法。它说延迟对象曾经有过一个错误方法,但是因为失败在那个环境中更有意义而被弃用了。

ajax()调用返回的对象实现了一个promise接口,因此你可以调用fail()和done()然后调用()。

你也可以使用选项'错误'在进行ajax调用之前定义故障回调函数。请注意,这不是一个功能,而是一个选项。