jQuery AJAX - 成功还是完成回调?

时间:2012-08-28 13:37:46

标签: jquery

我对jQuery的AJAX函数有一个简单的问题。

我按照ajax调用的方式执行以下操作:

$.ajax({
    type: "GET",
    url: "/wordpress/wp-admin/admin-ajax.php",
    dataType: 'html',
    data: ({ action: 'loadHomePage'}),
    beforeSend: function() {
        document.getElementById('loading').style.visibility = 'visible';
    },
    complete: function(){
        FB.Canvas.setAutoGrow(false);
        FB.Canvas.setSize({height:600});
        setTimeout(function(){
            FB.Canvas.setAutoGrow(true);
        }, 100);
    },
    success: function(data){
        data = $.trim(data);
        $('#ajax-content').hide().empty().fadeIn('slow').html(data);
        FB.Canvas.scrollTo(0,0);                
    }
});

麻烦的是,在这个特殊的例子中,它是一个完整的网站,在facebook iframe中使用ajax进行页面导航,当在页面之间导航时,它似乎多次淡化内容,所以我想知道最佳实践是什么这里是为了淡出部分 - 它应该完整的部分吗?

我原本完成了调整大小的东西但移动它我认为它有所不同但不确定它是否是安慰剂效应....

如果是这样,我是否通过执行以下操作来实现它:

complete: function(data){
    // fade in etc

其次,如果在源代码的排序成功之前完成,或者顺序是重要的,那么可以这样做,例如,成功和然后完成?

2 个答案:

答案 0 :(得分:5)

在“成功”和“错误”(以适合您的请求为准)之后,

'完成'触发并结束请求周期,其时间与您在源代码中声明它的位置无关。

完整的功能没有收到'data'参数,所以如果您的操作取决于数据,那么它将无法在那里工作。

答案 1 :(得分:4)

执行completesuccess回调后执行

error

所以你会得到那些可能的链

success - > complete

error - > complete

您可能只想处理成功的通话。