2011-03-21 89 views
1

我正在注册几个jQuery Ajax对象的回调函数。AJAX JQuery延期回调只会被调用一次

所以我必须:

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()时,函数外部的hed只会被解雇。

另外,有没有什么办法来声明一个ajax对象并稍后发送。 像g_userXHR.send();

谢谢

回答

0

如果代码的“别处”不会每次“main_getLogin()”之称,那么他们就不会运行重新添加那些“成功”的回调。每次调用“$ .ajax”构造一个全新的“延迟”对象,因此您对第一个对象的操作不会影响jQuery为您构建的下一个此类对象。

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

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

什么是readding这些回调,或者以某种方式有一个全局对象的efficent方式....我想简单地说'g_userXHR.resend();' – mmv 2011-03-21 16:11:49

+0

我会延长答案。 – Pointy 2011-03-21 16:26:40

+0

谢谢 - 你是天赐之物 – mmv 2011-03-21 16:46:00