javascript - $.ajaxComplete 和 $.ajaxError 的正确用法?

标签 javascript ajax jquery

我一直在我的 ajax 表单提交中使用以下代码段:

$.ajax({
url: "",
data: ilmoittautumisdata,
type: "POST",
success:function(){

});
error:function(){

});
});

但是,我记得有人告诉我停止在其中使用 success 和 error,因为它们已被弃用(?),而是使用 $.ajaxComplete();$。 ajaxError();.

但是,阅读文档对我没有帮助,因为我想同时使用它们,这对我不起作用。

$('#ilmoittuminen').submit(function(){
            var ilmoittautumisdata = $('#ilmoittuminen').serialize();
            $.ajax({
                //url: "",
                data: ilmoittautumisdata,
                type: "POST"
                });
            $.ajaxComplete(
            function(){
            $('#ilmoittuminen').slideUp();
            });
            $.ajaxError(
            function(){

            });
    return false;
    });​

我应该怎么做?

http://jsfiddle.net/D7qgd/

最佳答案

首先,您要查找的词是“已弃用”。据我所知,successerror 属性绝对不会被弃用。您可以(并且在您的情况下应该)继续使用它们。

您尝试使用 ajaxErrorajaxComplete 的问题在于它们是作为 instance 方法实现的,而不是 jQuery 上的静态方法对象本身。因此,您需要选择一些元素并调用该集合的方法。元素本身根本不重要:

$("#someElement").ajaxComplete(function () {
    // Do stuff
});

您还没有遇到的下一个问题是 ajaxError 和相关方法注册全局 AJAX 事件处理程序。每次调用其中一个方法时,您都会向全局集中添加一个新的事件处理程序,并且每次触发 AJAX 事件时,所有您注册的处理程序都将被执行。


更新(感谢@DCoder)

从 jQuery 1.8 开始,successerror 属性已弃用。相反,您可以使用 jQuery 修改的 XHR 对象的 faildonealways 方法。从 deferred object 继承的任何对象可以使用这些方法(jqXHR 对象就是其中之一):

$.ajax(ajaxSetupObject).done(function () {
    // Handle success
}).error(function () {
    // Handle error
});

关于javascript - $.ajaxComplete 和 $.ajaxError 的正确用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12881072/

相关文章:

javascript - 可以在 Javascript 中控制 CSS 溢出滚动条吗?

javascript - jQuery setTimeout 重置?

javascript - Firebase update() - 排除字段

javascript - React 组件的简单转换

javascript - Selenium WebDriver findElements 返回对象

jquery - 如何从表中删除元素但保留在数据库中

javascript - 为什么 <!-- 返回未定义而不是语法错误?

javascript - event.preventDefault 不工作

没有表单元素的jquery ajax POST

javascript - 每个循环返回未定义的结果