0

大家好,这是我的代码:

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 调用不需要像 spinner 这样的任何视觉加载等等,所以在数组“opzioni”中,我设置了一个标志“caricamento”:0(与“加载”:0 相同)只需检查我的 ajax 对象以了解我的意思,它可以工作,直到我使用“caricamento”进行一些 ajax 调用:1,从那一刻起,我的递归函数中的每个 ajax 调用都会使“printLoading”...任何提示????

4

1 回答 1

0

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

于 2013-05-13T15:59:52.503 回答