1

いくつかのjqueryajaxオブジェクトにコールバックを登録しています。

ので、私は持っています:

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

「elsewhere」であるそのコードが、「main_getLogin()」が呼び出されるたびにそれらの「success」コールバックを再追加しない場合、それらは実行されません。「$.ajax」を呼び出すたびに、まったく新しい「Deferred」オブジェクトが作成されるため、最初のオブジェクトに対して行ったことは、jQueryが次に作成するそのようなオブジェクトには影響しません。

成功したときに常に特定のことを実行したい場合は、「$。ajaxSuccess()」を使用できます。

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