PHP使用javascript每3秒刷新一次数据

PHP使用javascript每3秒刷新一次数据,javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,Ajax,我试图每三秒读取一次数据,而不重新加载页面。我的脚本中缺少一些内容,因为在我重新加载页面之前,它不会刷新数据。提前谢谢 <html> <head> <meta charset="UTF-8"> <title>Testing</title> <!-- below script is for jquery --> <script type="tex

我试图每三秒读取一次数据,而不重新加载页面。我的脚本中缺少一些内容,因为在我重新加载页面之前,它不会刷新数据。提前谢谢

<html>
   <head>
       <meta charset="UTF-8">
       <title>Testing</title>       
      <!-- below script is for jquery --> 
       <script type="text/javascript" src="js/jquery-1.4.2.js"></script>
       <script type="text/javascript">
           function refreshData(){
               $.ajax({
                 url: 'localhost/index1.php',
                 type:"POST",
                 data:"dataPost", 
                 success: function(data){
                 document.getElementById("dataPost").innerHTML = data;

                   //render the dynamic data into html
                 }
               });
           }
           setInterval(refreshData, 3000);
           </script>
   </head>
   <div id="dataPost">
   <?php
       $conn = mysql_connect('localhost','user','password');    
       $db = mysql_select_db('db',$conn);
       $query = "select * from table";
       $result = mysql_query($query);
       while($row = mysql_fetch_array($result))
       {
           echo $row['data1']."<br/>";
       }
   ?>
   </div>    
</html>

测试
函数refreshData(){
$.ajax({
url:'localhost/index1.php',
类型:“POST”,
数据:“数据邮报”,
成功:功能(数据){
document.getElementById(“dataPost”).innerHTML=数据;
//将动态数据呈现为html
}
});
}
设置间隔(刷新数据,3000);

不要调用页面本身,而是将div中的php代码放入一个.php文件中,并在AJAX调用中调用该文件。仅此而已。

我同意@Axel,但由于Ajax是一个异步函数,即使您的PHP代码位于外部文件中,您仍然会遇到计时问题

基本上,您不知道Ajax调用需要多长时间才能完成(假设服务器繁忙或停机),因此手动将间隔设置为每3秒一次是没有意义的。您需要将其设置为上次完成后的3秒

在php上-只需将脚本放入外部文件(即script.php)

在Javascript上-

  • 在成功事件中移动setInterval(),并使用 改为setTimeout()
  • 创建document.ready事件并从中调用refreshData()

    
    $(文档).ready(函数(){
    刷新数据();
    });
    函数refreshData(){
    $.ajax({
    url:'localhost/script.php',
    类型:“POST”,
    数据:“数据邮报”,
    成功:功能(数据){
    document.getElementById(“dataPost”).innerHTML=data;//如果已经在使用jQuery,为什么不使用$('#dataPost').html(data)?
    setTimeout(refreshData,3000);//将在最后一个调用完成3秒后进行下一个调用。
    //将动态数据呈现为html
    }
    });
    }
    
  • 您的PHP文件(script.PHP)如下所示:

    <?
           $conn = mysql_connect('localhost','user','password');    
           $db = mysql_select_db('db',$conn);
           $query = "select * from table";
           $result = mysql_query($query);
           while($row = mysql_fetch_array($result))
           {
               echo $row['data1']."<br/>";
           }
       ?>
    
    
    
    希望这有帮助


    很多人都会指出,mysql_connect正在被弃用,因此最好开始使用MySQLi或PDO

    我发现它这样做的原因是javascript版本。我使用了1.8.0,它开始运行良好。它一直在工作,但谷歌浏览器有版本问题。我做了很少的研究,尝试更改版本号,结果成功了。

    检查了控制台是否有错误?我尝试了,但没有成功。控制台没有显示任何错误,只是没有在特定间隔刷新数据开发工具的网络选项卡显示了什么?index1.php中的内容是什么?请尝试var ref=setInterval(function(){refreshData()},3000);直到我更改了javascript的版本号,它才起作用。但我同意你所说的方式是正确的+1美元。谢谢。正确的答案是更改javascript的版本。Google chrome没有使用旧的javascript,所以我改为1.8.0版本,效果很好
    <?
           $conn = mysql_connect('localhost','user','password');    
           $db = mysql_select_db('db',$conn);
           $query = "select * from table";
           $result = mysql_query($query);
           while($row = mysql_fetch_array($result))
           {
               echo $row['data1']."<br/>";
           }
       ?>