1

我正在一些 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();

直接连接到 g_userXHR 的 .success 每次都会被调用,但是附加在函数之外的其他回调仅在我第一次调用 main_getLogin() 时被触发;

另外,有没有办法声明一个ajax对象,以后再发送。像 g_userXHR.send();

谢谢

4

1 回答 1

0

如果“其他地方”的代码在每次调用“main_getLogin()”时都没有重新添加那些“成功”回调,那么它们将不会运行。对“$.ajax”的每次调用都会构造一个全新的“Deferred”对象,因此您对第一个对象所做的操作不会影响 jQuery 为您构建的下一个此类对象。

如果你想在成功后总是做某些事情,你可以使用“$.ajaxSuccess()”:

$.ajaxSuccess(function() { ... });
于 2011-03-21T16:08:27.007 回答