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

时间:2014-01-24 21:13:47

标签: javascript php jquery mysql ajax

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

<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>

3 个答案:

答案 0 :(得分:2)

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

基本上,您无法知道完成Ajax调用需要多长时间(想象服务器正忙或低),因此手动设置间隔为每3秒是没有意义的。您需要将其设置为距离上次完成时间3秒。

在你的php上 - 只需将你的脚本放在外部文件中(即script.php)。

在你的Javascript上 -

  1. 在成功事件中移动setInterval(),然后使用 而不是setTimeout()。
  2. 创建document.ready事件并从中调用refreshData()。

      <script type="text/javascript">
        $(document).ready(function() {
        refreshData();
        });
                   function refreshData(){
                       $.ajax({
                         url: 'localhost/script.php',
                         type:"POST",
                         data:"dataPost",
                         success: function(data){
                         document.getElementById("dataPost").innerHTML = data;//why not use $('#dataPost').html(data) if you're already using jQuery?
                            setTimeout(refreshData, 3000);//will make the next call 3 seconds after the last one has finished.
                           //render the dynamic data into html
                         }
                       });
                   }
    
                   </script>
    
  3. 您的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/>";
           }
       ?>
    

    希望这有帮助。

    许多人都会指出,p.S.S不推荐使用mysql_connect,因此最好开始使用MySQLi或PDO。

答案 1 :(得分:0)

而不是调用页面本身,将来自div的php代码放入单个.php文件中,并在AJAX调用中调用此文件。就是这样。

答案 2 :(得分:0)

我发现它之所以这样做是javascript的版本。我使用1.8.0它开始工作正常。它一直在工作,但谷歌浏览器有版本问题。我做了很少的研究,并尝试更改版本号,但它确实有效。