jquery ajax 在表重复的末尾添加 mysql 行

Posted

技术标签:

【中文标题】jquery ajax 在表重复的末尾添加 mysql 行【英文标题】:jquery ajax adds mysql rows at the end of the table-repeating 【发布时间】:2020-08-16 09:05:35 【问题描述】:

我使用 ajax jquery 从 mysql 表数据填充一个表,以每隔一段时间刷新它的内容。 我将时间设置为 1 秒。 html 不断重复现有表格末尾的表格。

这里是成功创建json数据的php文件。

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "esp_data";
$conn = new mysqli($servername,$username,$password,$dbname);
$myArray = array();
if ($result = $conn->query("SELECT * FROM sensordata")) 
    while($row = $result->fetch_array(MYSQLI_ASSOC)) 
            $myArray[] = $row;
    
    echo json_encode($myArray);

$result->close();
$conn->close();
?>                          

这里是主索引文件

< !DOCTYPE html >
  <html>
    <head>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
      <script >
        var $myTable = $('#myTable')
       $(document).ready(function()
          function getData() 
            var row = '';
            $.ajax(
              type: 'POST',
              url: 'data.php',
              dataType: 'json',
              success: function (data) 
                $.each(data, function (i, item) 
                  var row = $('<tr>');
                  row.append('<td>' + item.value1 + '</td>');
                  row.append('<td>' + item.value2 + '</td>');
                  row.append('<td>' + item.Driver + '</td>');
                  $('#myTable').append(row);
                );
              
            );
          
        getData();
        setInterval(function () 
          getData();
        , 1000);  // it will refresh your data every 1 sec
       );
</script>
      <body>
        <div>
          <table id="myTable">
            <tr>
              <th>Lap</th>
              <th>Time</th>
              <th>Driver</th>
            </tr>
          </table>
        </div>
      </body>
</html>

生成的json数据:

[
  
    "id": "1",
    "value1": "144",
    "value2": "00:01:125",
    "Driver": ""
  ,
  
    "id": "2",
    "value1": "144",
    "value2": "00:01:125",
    "Driver": ""
  ,
  
    "id": "9",
    "value1": "11",
    "value2": "00:01:125",
    "Driver": ""
  ,
  
    "id": "10",
    "value1": "12",
    "value2": "00:00:827",
    "Driver": ""
  
]

有谁知道为什么会发生这种情况,我该如何解决?

【问题讨论】:

【参考方案1】:

您将在每次调用结束时使用$('#myTable').append(row) 附加新行,而不删除旧行。

您可以在每次调用开始时将其设置为空;

...
$.each( data, function(i,item ) 
    $('#myTable').html('')   //here
    var row=$('<tr>');
    ...

【讨论】:

【参考方案2】:
 ...

  $('#myTable').html('')   //here
  $.each( data, function(i,item ) 
      var row=$('<tr>');
    ...

这工作正常 非常感谢。

【讨论】:

以上是关于jquery ajax 在表重复的末尾添加 mysql 行的主要内容,如果未能解决你的问题,请参考以下文章

使用ajax jQuery for-each函数在表中追加多个数据

jQuery post ajax函数[重复]

jQuery Ajax Post,将它们添加到数据库,返回数据并再次重复该过程

jquery函数在表的第二页上不起作用[重复]

如何使jquery“$ .post”请求同步[重复]

带AJAX和Jquery的asp.net MVC中的实时搜索数据