setInterval, ajax request


setInterval, ajax request

获取ajax请求的最佳方式是什么。

我的每次调用javascript函数都会变得越来越快我不知道为什么。

这是代码:

$(function(){
getSuggestions();
});
function getSuggestions(){
    var url = $("#baseUrl").val() + '/placement/suggestions/x-fetch-suggestions';
    var data ={}
    var result = myAjaxJson(data,url); //gets json object via ajax
/* gets object 'sug' and put into #suggestions-list*/
    $('#suggestions-list').html(result.sug);
    var a = setInterval("getSuggestions()",5000);
}

这里有一个递归的双循环。

试试这个:

$(function(){
   var a = setInterval("getSuggestions()",5000);
});
function getSuggestions(){
    var url = $("#baseUrl").val() + '/placement/suggestions/x-fetch-suggestions';
    var data ={}
    var result = myAjaxJson(data,url); //gets json object via ajax
/* gets object 'sug' and put into #suggestions-list*/
    $('#suggestions-list').html(result.sug);

}

每次调用getSuggestions时都会启动新的setInterval。设置在外部:

$(function(){
    var a = setInterval("getSuggestions()",5000);
});

的输入

$(function(){
    getSuggestions();
});

并从getSuggestions方法中删除setInterval代码。

不要使用setInterval,使用setTimeout。setInterval每5秒调用一次函数,无论上一个Ajax请求是否完成。setTimeout将在上一个Ajax请求后等待5秒,以启动下一个请求。:

$(function(){
getSuggestions();
});
function getSuggestions(){
    var url = $("#baseUrl").val() + '/placement/suggestions/x-fetch-suggestions';
    var data ={}
    var result = myAjaxJson(data,url); //gets json object via ajax
/* gets object 'sug' and put into #suggestions-list*/
    $('#suggestions-list').html(result.sug);
    var a = setTimeout("getSuggestions()",5000);
}
    var counter = 0;
var timer = null;
function loader(){
    if (timer) {
        clearTimeout(timer);
        timer = null;
        return;
    }
    timer = window.setInterval(function(){
    $("#paragraph").load("file.php");
    }, 10);
}
window.onload = function() {
    loader();
};