正确使用$ .ajaxComplete和$ .ajaxError?

时间:2012-10-14 09:50:51

标签: javascript ajax jquery

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

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

});
error:function(){

});
});

但是,我记得我被告知要停止使用其中的成功和错误,因为它们已被弃用(?)而是使用$.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/

2 个答案:

答案 0 :(得分:3)

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

您尝试使用ajaxErrorajaxComplete的问题在于它们是作为实例方法实现的,而不是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
});

答案 1 :(得分:1)

此代码处理ajax方法中的成功和错误。如果成功,则会使用您收到的对象打印出成功,反之亦然。

$.ajax({
   type: 'json',
   url: 'foobar.com',
   success: function(s) { 
     console.log('success' + s);
   },
   error: function(e) {
     console.log('error' + e);
   }
});