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 呼び出しでは、スピナーのような視覚的な読み込みは必要ありません。などなので、配列「opzioni」にフラグ「caricamento」を設定します:0 (「loading」:0 と同じ) ajax オブジェクトをチェックして、「caricamento」を使用する ajax 呼び出しを行うまで機能します。 :1、その瞬間から、再帰関数で ajax を呼び出すたびに「printLoading」が行われます...ヒントはありますか????

4

1 に答える 1

0

ajaxStartおよびグローバルajaxStopである場合は、それらを本体に追加します。この場合はおそらく使用しないでください。機能を ajax リスナーに追加するだけです (成功とエラー)。ajaxStart/Stop

于 2013-05-13T15:59:52.503 に答える