表中的自动刷新有问题

时间:2016-07-08 05:42:44

标签: javascript php html ajax

我有这个index.php文件来显示循环表中的一些内容:

$sql = 'SELECT id FROM usertbl';
$stmt = $hund->runQuery($sql);
$stmt->execute();
$row = $stmt->fetchALL(PDO::FETCH_ASSOC);

<?php foreach ($row as $runloop) { ?>
<table><th> <?php echo $runloop['id']; ?> </th></table>
<?php } ?>

但是,我希望自动刷新这些表。我有这个新文件data.php和更新的index.php

data.php:

$sql = 'SELECT id FROM usertbl';
$stmt = $hund->runQuery($sql);
$stmt->execute();
$row = $stmt->fetchALL(PDO::FETCH_ASSOC);
print_r($row);

的index.php:

   <div id="show"></div>

   <script type="text/javascript">
      $(document).ready(function() {
        setInterval(function () {
            $('#show').load('data.php')
        }, 3000);
    });
   </script>

   <?php foreach ($row as $runloop) { ?>
   <table><th> <?php echo $runloop['id']; </th></table>
   <?php } ?>

这将刷新并打印上述<div>

中的输出
<div class="show"></div>

它的效果很好,但我并不知道如何将它放在表的循环中,就像第一个index.php文件一样。有关此问题的指示的任何建议吗?

2 个答案:

答案 0 :(得分:1)

在这一行中,您忘了关闭<?php ...

可能这就是foreach循环无法正常工作的原因

     <?php foreach ($row as $runloop) { ?>
   <table><th> <?php echo $runloop['id']; ?></th></table>
   <?php } ?>

将这些行放在data.php所在的print_r()

答案 1 :(得分:1)

您可以使用ajax调用data.php并以json格式返回响应以获得更好的方法

尝试: 的 JS

function populate(){
var items= [];
$.ajax({
 url: 'data.php',
 type: 'GET',
 dataType: 'json',
 success: function(data){

    //do something with data here
      console.log(data);
    //loop through data and push to array
    $.each(data, function(i,v){
       items.push('< th >'+v+'< /th >');
    });       
    //join array and append to table
    $('#sampleTable tbody').html(items.join(','));
    },
 error: function(err){
     console.log(err.responseText);
    }
});
}

//call populate every 10 secs (example only , you can change to how many    seconds you like)
setTimeout(function(){
  populate();
},10000);

<强> data.php

$sql = 'SELECT id FROM usertbl';
$stmt = $hund->runQuery($sql);
$stmt->execute();
$row = $stmt->fetchALL(PDO::FETCH_ASSOC);
echo json_encode($row);