0

次のコードがあります。間隔は10秒に設定されています。

(function($){ 
    $(document).ready(function() { 
        disp_log(); 
        setInterval(function () {
            disp_log();
        }, 10 * 1000);

        function disp_log() { 
            $.ajax({ 
                "type" : "GET", 
                "url" : "/get_log/", 
                "dataType" : "json", 
                "cache" : false, 
                "success" : function(json) { 
                    data=""
                    for(var j = 0; j < json.length; j++) { 
                        data+="<tr><td>"+json[j]+"</td></tr>"
                    } 
                    $("#log").html(data);
                } 
            })(jQuery); 
        }
    }); 
})(django.jQuery); 

しかし、さわやかなことは起こりません。誰かplzは理由を教えてもらえますか?

4

4 に答える 4

1

以下のように使用してください。

setInterval(disp_log, 10 * 1000);

関数がグローバルである場合は、次のように使用します

setInterval("disp_log()", 10 * 1000);

(jQuery)また、ajax呼び出しの終了後には必要ありません。

そして、あなたが持っているより重要な(function($){こと と$(document).ready(function() {。どちらも同じように使用するので、必要ありません。

テスト済みコードの動作

<script type="text/javascript">

    $(document).ready(function()
    {
        disp_log(); 
        setInterval(disp_log, 10 * 1000);

        function disp_log()
        {
            $.ajax({ 
                "type" : "GET", 
                "url" : "/get_log/", 
                "dataType" : "json", 
                "cache" : false, 
                "success" : function(json)
                { 
                    var data;
                    for(var j = 0; j < json.length; j++)
                    { 
                        data+="<tr><td>"+json[j]+"</td></tr>"
                    } 
                    $("#log").html(data);
                } 
            }); 
        }
    }); 

</script>
于 2013-03-05T10:58:39.310 に答える
1

ここにエラーがあります:$.ajaxjQueryを呼び出すための何かを返しません。その必要はありません(jQuery)

于 2013-03-05T11:01:03.183 に答える
1

ここで行う必要があるのはデバッグです。まず最初に、コードを取り戻しているかどうかを調べます。これは、...を使用して行うことができます。

"success" : function(json) { 
    console.log(json);
    //or..
    alert(json);
} 

何も返されない場合は、setIntervalコードではなく、AJAXリクエストが問題です。

ただし、setIntervalコードでは、ajax呼び出しの読み込みに時間がかかる可能性があるため、実行を続けるだけではいけないことを知っておく必要があります。より良い方法は、setTimeout...を使用することです。

setTimeout(disp_log,10*1000);

次に、成功関数内に、同じコードをもう一度入れます...

"success" : function(json) { 
    setTimeout(function() {
        disp_log()
    },10*1000);
} 

これにより、最後にデータが成功した後、コードが10秒実行され続けることが保証されます。考慮すべき他の問題があります(たとえば、ajax呼び出しが失敗した場合にスクリプトを実行し続ける方法)が、これにより、サーバー要求と同期しなくなることはありません!

于 2013-03-05T11:04:20.593 に答える
0

問題はブラウザにある可能性があります

このsetInterval()関数の使用に問題がありましたが、後でそれが私のMozillaの問題であることがわかりました。Chromeで実行しようとしたとき、それは完璧でした。

于 2013-04-09T12:29:26.470 に答える