5

我使用 jQueryajax()来获取信息。我在请求成功时调用该方法。这是代码:

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 调用 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缓存:false,问题解决了。谢谢大家。

于 2013-08-19T13:48:01.853 回答