Javascript 每10秒运行一次php脚本

Javascript 每10秒运行一次php脚本,javascript,jquery,ajax,Javascript,Jquery,Ajax,我试图使用setInterval每10秒执行一次php脚本update.php并刷新div id=verification。由于某些原因,setInterval正在阻止脚本运行。如果您对放置\更改setInterval的位置有任何建议,我将不胜感激,因为我被难住了(抱歉,这里是入门级javascript用户)。为了清楚起见,我省略了所有不相关的细节,比如变量 <div id="verification"></div> <script id="verificatio

我试图使用setInterval每10秒执行一次php脚本update.php并刷新div id=verification。由于某些原因,setInterval正在阻止脚本运行。如果您对放置\更改setInterval的位置有任何建议,我将不胜感激,因为我被难住了(抱歉,这里是入门级javascript用户)。为了清楚起见,我省略了所有不相关的细节,比如变量

<div id="verification"></div>

<script id="verification" language="javascript" type="text/javascript">
$(function() {
    $.ajax({
        url: 'update.php', //php          
        data: "", //the data "caller=name1&&callee=name2"
        dataType: 'json', //data format   
        success: function(data) //on receive of reply
            {
                var foobar = data[2]; //foobar
                $('#verification').html("(<b>" + foobar + "</b>)"); //output to html

            }
    });
});

setInterval(10000); //every 5 secs
</script>

$(函数(){
$.ajax({
url:'update.php',//php
数据:,//数据“caller=name1&&callee=name2”
数据类型:“json”,//数据格式
成功:函数(数据)//收到回复时
{
var foobar=data[2];//foobar
$(“#验证”).html(“+foobar+”);//输出为html
}
});
});
设定间隔(10000)//每5秒

建议/步骤/错误:

  • 创建一个单独的函数来执行
    ajax
    请求
  • 在页面加载时调用此函数,以便在页面加载时运行它
  • 使用
    setInterval()
    每隔
    n
    秒调用一次函数
  • id
    应始终是唯一的。您现在正在使用
    验证
    ,就好像在使用
  • 您可以删除
    id
    language
    属性。这些都不是必需的
  • 代码:

    函数更新(){
    $.ajax({
    url:'update.php',//php
    数据:,//数据“caller=name1&&callee=name2”
    数据类型:“json”,//数据格式
    成功:功能(数据){
    //收到答复后
    var foobar=data[2];//foobar
    $(“#验证”).html(“+foobar+”);//输出为html
    }
    });
    }
    $(文档).ready(更新);//页面加载时调用
    //                ^^^^^^
    设置间隔(更新,10000)//每10秒
    //          ^^^^^^
    
    您缺少功能块:

    setInterval(function() {
      // to do
    }, 5000);
    
    我的建议是在运行ajax时使用
    setTimeout
    ,但不确定它是否能在5秒内完成。如果你想这样做:

    var dispatchUpdates=function(){
    设置超时(pullUpdates,5000);
    };
    var pullUpdates=函数(){
    $.ajax({
    url:'update.php',
    数据:“,
    数据类型:“json”,
    成功:功能(数据){
    var foobar=数据[2];
    $(“#验证”).html(“+foobar+”);
    dispatchUpdates();//下一次更新
    },
    错误:函数(){
    dispatchUpdates();//重试
    }
    });
    };
    $(发送更新)//页面加载
    setInterval()
    将一个函数(它应该执行)作为第一个参数

    试试这个:

    setInterval(function(){
      $.ajax({                                      
          url: 'update.php', //php          
          data: "",                        //the data "caller=name1&&callee=name2"
          dataType: 'json',                //data format   
          success: function(data)          //on receive of reply
          {
              var foobar = data[2];           //foobar
              $('#verification').html("(<b>"+foobar+"</b>)");     //output to html
          } 
      });
    }, 10000);
    
    setInterval(函数(){
    $.ajax({
    url:'update.php',//php
    数据:,//数据“caller=name1&&callee=name2”
    数据类型:“json”,//数据格式
    成功:函数(数据)//收到回复时
    {
    var foobar=data[2];//foobar
    $(“#验证”).html(“+foobar+”);//输出为html
    } 
    });
    }, 10000);
    
    您使用setInterval的方式不正确-您可以在此处阅读:


    另外请注意,AJAX调用是异步的——当程序继续运行时,并不意味着之前的AJAX调用已经结束。您可以使用一些jQuery机制(如绑定或使用

    等)来“等待”AJAX完成。您缺少了
    setInterval
    的函数参数。这应该会有所帮助:您不是在几个小时前发布了一个非常类似的问题吗?区别在于它使用了
    setTimeout
    而不是
    setInterval
    ;但这并没有起作用。它被标记为一个重复的问题,这是不正确的。我需要的不仅仅是setInterval的基本语法帮助。10秒是如何变成5秒的?@Barmar我看到评论说
    5秒
    so。我已更新为使用10秒。您还可以使用
    setTimeout
    而不是
    setInterval
    在上一个回调函数中安排下一个调用。
    setInterval(function(){
      $.ajax({                                      
          url: 'update.php', //php          
          data: "",                        //the data "caller=name1&&callee=name2"
          dataType: 'json',                //data format   
          success: function(data)          //on receive of reply
          {
              var foobar = data[2];           //foobar
              $('#verification').html("(<b>"+foobar+"</b>)");     //output to html
          } 
      });
    }, 10000);