2011-03-21 62 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