5

jQuery を使用ajax()して情報を取得します。リクエストが成功したときにメソッドを呼び出します。コードは次のとおりです。

function recursively_ajax(){
    console.warn("begin");
    $.ajax({
        type:"GET",
        url: "./JvmInfoClass",
        success: function(data){
            console.warn("get jvm info success");
            recursively_ajax();
        }
    });
}

recursively_ajax();

バックエンドでスレッドを 3 秒間スリープさせます。ただし、コンソールは3秒後ではなく、メッセージを継続的に出力します。どうしてこれなの?

4

3 に答える 3

12

ajax call async:false でこれを試すことができます

var counter=0;
 function recursively_ajax()
{
var pass_data=5;
var chartMenu=['VTR','NC','RC','TOCU','TOCO','TR','COA','MP'];
$.ajax({
        type:"POST",
        async:false, // set async false to wait for previous response
        url: "url to server",
        dataType:"json",
        data:{dataMenu:pass_data},
        success: function(data)
        {
            counter++;
            if(counter < chartMenu.length){
                recursively_ajax();
            }
        }
    });
 }      
 recursively_ajax();        
于 2014-05-26T07:18:41.223 に答える
11

その場合、サーバーは 3 秒後にのみ応答を返す必要があるため、バグはサーバー側のコードにあります。

ただしsetTimeout()、クライアント側で使用してリクエストの頻度を制限することをお勧めします

試す

function recursively_ajax(){
    console.warn("begin");
    $.ajax({
        type:"GET",
        url: "./JvmInfoClass",
        success: function(data){
            console.warn("get jvm info success");
            setTimeout(recursively_ajax, 3000)
        }
    });
}
recursively_ajax();
于 2013-08-19T09:23:54.757 に答える
3

ブラウザのキャッシュの問題です。URLに日付を追加するか、ajax cache:false を設定します。問題は解決しました。ありがとうございます。

于 2013-08-19T13:48:01.853 に答える