在启动时,每10秒运行一次AJAX请求

时间:2014-04-25 21:06:08

标签: php jquery ajax

这是对这里发现的SO问题的回应 - > Polling every 10 seonds

SO帖子有所帮助,但是当我试图使它符合我的需要时,它就没有用完了。

我有一个PHP脚本,可以将随机数据输入我的数据库。当我将浏览器直接指向'create_new_job.php'时,脚本运行正常。我的问题是,一旦我的主页加载,我似乎无法每10秒运行一次ajax请求来运行脚本。

我的php脚本将数据插入数据库:'create_new_job.php'

我的主页:index.php

这是我的index.php:

<script>
    function newjobs() {
    var inputjob = $.ajax({
                    url: "create_new_job.php",
                    complete: schedulenewjobs
                    });
    inputjob.done(function(data) { alert('Job added!'); }
    inputjob.fail(function(data) { alert('Job not added....'); }
}

function schedulenewjobs() {
    setTimeout(function() { newjobs(); }, 10000);
}
</script>

首先,我在第

行收到错误

inputjob.fail(.....

但是当我删除'完成'和'失败'通知时,没有任何反应。没有插入数据,我没有收到任何错误。

我不是想要检索任何数据 - 我只想每10秒运行一次'create_new_job.php'。

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:5)

你没有正确关闭你的函数,并且每十秒运行一次该函数,你可以使它递归,再次从done()回调中调用它,或者你可以使用一个区间

(function newjobs() {
    var inputjob = $.ajax({
                        url: "create_new_job.php"
                   });
    inputjob.done(function(data) {  
        alert('Job added!'); 
        setTimeout(newjobs, 10000); // recursion
    });
//   ^^ missing closing

    inputjob.fail(function() { 
        alert('Job not added....'); 
    });
})();

答案 1 :(得分:1)

$(document).ready(function(){
  setInterval(
    newjobs(),
    10000
  );
});

function newjobs() {
  inputjob = $.ajax({
    url: "create_new_job.php",
  })
    .done(function(data) { alert('Job added!'); })
    .fail( function(data) { alert('Job not added....'); });
}

答案 2 :(得分:1)

我认为这篇文章会对您有所帮助: Send AJAX request every n seconds using jQuery

sendRequest();

 function sendRequest(){
  $.ajax({
    url: "example.php",
    success: 
      function(data){
       $('#listposts').html(data); 
    },
    complete: function() {
   setInterval(sendRequest, 10000); // Call AJAX every 10 seconds
  }
 });
};

答案 3 :(得分:-1)

尝试setInterval函数

setInterval(function() {
    function newjobs() {
    var inputjob = $.ajax({
                    url: "create_new_job.php",
                    complete: schedulenewjobs
                    });
    inputjob.done(function(data) { alert('Job added!'); }
    inputjob.fail(function(data) { alert('Job not added....'); }
}
}, 10 * 1000);