Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX JQuery延迟回调只调用一次_Javascript_Jquery_Ajax_Jquery Deferred - Fatal编程技术网

Javascript AJAX JQuery延迟回调只调用一次

Javascript AJAX JQuery延迟回调只调用一次,javascript,jquery,ajax,jquery-deferred,Javascript,Jquery,Ajax,Jquery Deferred,我正在注册几个jQueryAjax对象的回调 因此,我: function main_getLogin( options ){ g_userXHR = $.ajax({ url:'ajx/_account.aspx', type:'POST' ,cache:false, dataType:'json' }) .success( function(data){ //var loginData = d

我正在注册几个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()

谢谢

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

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


读取这些回调或以某种方式拥有全局对象的有效方法是什么。。。。我想简单地说
g_userXHR.resend()谢谢-你是一个天赐之物,有人想,看看ajaxSuccess,难道没有其他办法吗?我有很多不同的ajax调用,如果不得不将我所有的逻辑都封装在$.ajaxSuccess中,那将是一件很遗憾的事情——那么如果需要分析实际调用的内容的话。好吧,如果你必须做一些特殊的事情,那么,除了确保每次启动新的ajax请求时都会调用代码之外,我看不到任何其他选择。再次感谢您的关注。不过,我只是想确定一下。没有办法获取XHR对象并简单地重新发送它?看起来很有趣。。。此外,您对我如何确保重新连接延迟的有何建议。现在我所能想到的是一个全局函数,它可以重新连接所有的函数…草率-但也可以编辑::-另一个想法-我今天早上早些时候尝试过,但记不起遇到的障碍。。。我可以使用自己的自定义延迟函数作为ajax调用的包装器吗。这样我就可以控制决心和承诺何时实现
$.ajaxSuccess(function() { ... });