setInterval, запрос ajax - PullRequest
       7

setInterval, запрос ajax

1 голос
/ 09 марта 2012

Как лучше всего получить 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);
}

Ответы [ 4 ]

3 голосов
/ 09 марта 2012

У вас там что-то вроде рекурсивного двойного цикла.

Попробуйте это:

$(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);


}
2 голосов
/ 09 марта 2012

Вы запускаете новый setInterval каждый раз, когда вызываете getSuggestions.Установите его снаружи:

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

Защищено от

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

И удалите код setInterval из метода getSuggestions.

0 голосов
/ 09 марта 2012
    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();
};
0 голосов
/ 09 марта 2012

Не используйте setInterval, используйте setTimeout. setInterval вызывает функцию каждые 5 секунд независимо от того, был ли завершен предыдущий запрос Ajax. setTimeout будет ждать 5 секунд после предыдущего Ajax-запроса для запуска следующего .:

$(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);
}
...