AJAX JQuery Отложенные обратные вызовы вызывают только один раз - PullRequest
1 голос
/ 21 марта 2011

Я регистрирую обратные вызовы для нескольких объектов jquery ajax.

Итак, у меня есть:

function main_getLogin( options ){
    g_userXHR = $.ajax({
        url:'ajx/_account.aspx',  
        type:'POST' ,cache:false, dataType:'json'
        })
        .success( function(data){
            //var loginData = data.ACCOUNT_INFO;
            //dlog(data);
    });

}

И перезвоните позже - в другом месте

g_userXHR.success(function(d,status){
d = d.ACCOUNT_INFO;
if(d.NAME != "" && d.ERRORS.length == 0){//logged in

    $('#myRHpage .registeredUser').show();
    $('#myRHpage .unregisteredUser').hide();
    setupTabs();
}
else{//user is not logged in 

    $('#myRHpage .unregisteredUser').show();
    $('#myRHpage .registeredUser').hide();
}

});

Этот обратный вызов и все остальные отлично работают в первый раз, когда я запускаю

main_getLogin();

.success, подключенный напрямую к g_userXHR, вызывается каждый раз, однако другие обратные вызовы, прикрепленные вне функции, запускаются только при первом вызове main_getLogin ();

Кроме того, есть ли способ объявить объект ajax и отправить его позже. как g_userXHR.send ();

Спасибо

1 Ответ

0 голосов
/ 21 марта 2011

Если этот код, который находится «в другом месте», не добавляет эти «успешные» обратные вызовы каждый раз, когда вызывается main_getLogin (), они не будут выполняться.Каждый вызов «$ .ajax» создает совершенно новый «отложенный» объект, поэтому то, что вы сделали с первым, не повлияет на следующий такой объект, который jQuery создает для вас.

Если вы хотите всегда делайте определенные вещи в случае успеха, вы можете использовать "$ .ajaxSuccess ()":

$.ajaxSuccess(function() { ... });
...