我正在几个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();
谢谢
答案 0 :(得分:0)
如果那个“其他地方”的代码在每次调用“main_getLogin()”时都没有重新添加那些“成功”回调,那么它们将不会被运行。每次调用“$ .ajax”构造一个全新的“Deferred”对象,所以你对第一个对象所做的不会影响jQuery为你构建的下一个对象。
如果你想总是在成功时做某些事情,你可以使用“$ .ajaxSuccess()”:
$.ajaxSuccess(function() { ... });