Jquery延迟问题(ajax然后动画然后回调)

时间:2014-09-05 13:13:48

标签: jquery callback deferred

我必须进行AJAX调用,然后执行一些操作,并在完成每个操作后成为回调函数。

我调用了getUsers()函数,并且需要知道此函数中的所有步骤何时都是精细的。

我没有尝试过任何工作......

function getUsers(userId){
    var dfd = $.Deferred();
    $.ajax({
        type: "GET",
        url: "../getUsers.php",
        data: {userid: userId},
        success: function(output){
            output = JSON.parse(output);
            $(output.activeUsers).appendTo("#users");
            $(output.inactiveUsers).appendTo("#users_inactive");

            $('.user').each(function(index){
                $(this).animate({
                    'height':55+'px'
                })
            })
            $('.user').promise().done(function() {
                overlay.fadeOut('fast',function(){
                    dfd.resolve;
                    return dfd.promise();
                });
            });
        }
    })
}


$.when(
    getUsers()
).then(function(){
    alert('something')
})

我做错了什么

1 个答案:

答案 0 :(得分:1)

评论中注明了多个问题

function getUsers(userId) {
    var dfd = $.Deferred();
    $.ajax({
        type: "GET",
        url: "../getUsers.php",
        data: {
            userid: userId
        },
        success: function (output) {
            output = JSON.parse(output);
            $(output.activeUsers).appendTo("#users");
            $(output.inactiveUsers).appendTo("#users_inactive");

            $('.user').animate({
                'height': 55 + 'px'
            }).promise().done(function () {
                overlay.fadeOut('fast', function () {
                    //need to invoke the resolve function
                    dfd.resolve();
                });
            });
        }
    }).fail(function () {
        //need to reject the promise if ajax request fails
        dfd.reject();
    });
    //return the promise here
    return dfd.promise();
}


$.when(getUsers()).then(function () {
    alert('something')
})