AJAX以设定的间隔运行onload

时间:2017-09-25 17:10:13

标签: javascript jquery ajax

我正在尝试在文档加载并每20秒运行一次时使我的AJAX工作。我该怎么做呢?我已经让它每20秒工作一次但是在文档加载时无法工作。任何帮助都会很棒。

<script type="text/javascript" language="javascript">
window.setInterval(function(){

var jobid = $('#jobid').text();
var filename = $('#filename').text();


    $.ajax({
        url: "../progress_bar.php",
        type:'POST',
        data: {"value1": jobid, "value2": filename},
        dataType: 'json',
        success: function(responce){
                $("#progress").html(responce);
            } // End of success function of ajax form
        }); // End of ajax call 

    }, 20000);

</script> 

由于

1 个答案:

答案 0 :(得分:2)

对于ajax请求,应始终使用递归超时而不是间隔(因为请求可能比间隔持续更长时间,因此一次完成多个请求),这也解决了主要问题:

//may wrap the whole thing into an onload listener
(function update(){
  $.ajax({
    url: "../progress_bar.php",
    type:'POST',
    data: {"value1": jobid, "value2": filename},
    dataType: 'json',
    success: function(responce){
            $("#progress").html(responce);
            //update again in 20secs:
            setTimeout(update, 20000);
        } 
    });  

})(); //start immeadiately

一个小型演示:

&#13;
&#13;
console.log("load");
(function next(){
  console.log("run");
  setTimeout( next, 1000);
})()
&#13;
&#13;
&#13;