Ajax递归函数工作奇怪

Ajax recursive function work strange

本文关键字:工作 递归函数 Ajax      更新时间:2023-09-26

大家好,这是我的代码:

var ajax={
    chiamata:function(target,url,opzioni){
        if (!tools.array_key_exists('caricamento',opzioni)){
            opzioni['caricamento']=1;
        }
        var dati=url.split('?');
        $.ajax({
            type: opzioni['type'],
            url: url,
            contentType:"application/x-www-form-urlencoded; charset=UTF-8",
            data: dati[1],
            dataType: "html",
            success: function(msg){
                if (opzioni['caricamento']!=0){
                    ajax.printLoading();
                }
                $(target).html(msg);
            },
            error: function(){
                alert("Chiamata fallita!");
            }
        })  
    },
    printLoading:function(){
        var body="#colonnaDX";
        $(body).ajaxStart(function(){
            $(body).append('<div id="loading"><img src="graphic/IMAGE/spinner.gif"/>Loading...</div>');
        })
        .ajaxStop(function(){
            $('#loading').remove(); 
        });
    }
},        
//Recursive function
var object={
    checkAzione:function(target,url,opzioni,interval){
        if (!interval)
            interval=60000;
        ajax.chiamata(target,url,opzioni);
        setTimeout(function() {
            this.checkAzione(target,url,opzioni,interval);
        }, interval);
    }
}
$(document).ready(function(){
    object.checkAzione(
        '#colonnaDX',
        'someactions.php',{
            'caricamento':0
        },
        10000
    );
})

我会尽量更好地解释这个问题,当文档准备好了,函数"checkAzione"开始,它使一些东西像DB调用等,这种ajax调用不需要任何视觉加载像旋转器等所以在数组"opzioni"我设置了一个标志'caricamento':0(相同的'loading':0)只是检查我的ajax对象看看我的意思,它的工作,直到我做一些ajax调用使用'caricamento':1,从那一刻起,每个ajax调用在我的递归函数使"printLoading"…任何建议? ?

ajaxStartajaxStop全局,您将它们添加到正文中。在这种情况下,您可能不应该使用ajaxStart/Stop,只需将该功能添加到ajax侦听器(成功和错误)。