【发布时间】:2018-08-03 11:37:45
【问题描述】:
在有人说它是一个重复的问题之前,我知道它是。我只是无法找到任何与我相似的脚本,而且由于我对 JavaScript 和 JQuery(习惯于 php)完全陌生,我真的不知道自己在做什么。
我的数据表在使用 php 加载数据时工作得很好(在页面加载之前),但现在它在页面加载之后加载,表格已经失去了所有的过滤和分页。
这是我的表格的加载方式。
<div class="table-responsive">
<table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
<thead>
<tr>
<?php echo $tableheader;?>
</tr>
</thead>
<tfoot>
<tr>
<?php echo $tableheader;?>
</tr>
</tfoot>
<tbody id="data"> <!--data will be inputed here-->
</tbody>
</table>
</div>
这是获取数据并将其放入表中的脚本。
<script>
//call ajax
var ajax = new XMLHttpRequest ();
var method = "GET";
var url = "data_assets.php";
var asynchronous = true;
setInterval(function(){
ajax.open(method, url, asynchronous);
//sending ajax request
ajax.send();
}, 250)
//receiving response from data_assets.php
ajax.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
//convert JSON back to array
var data = JSON.parse(this.responseText);
//console.log(data); //for debugging
//html value for <tbody>
var html ="";
//looping through the data
for (var a = 0; a < data.length; a++) {
var asset_number = data[a].asset_number;
var id = data[a].id;
var room = data[a].room;
var _location = data[a]._location;
var sku = data[a].sku;
var qty = data[a].qty;
var _value = data[a]._value;
var date = data[a].date;
var po_number = data[a].po_number;
var purchaced_from = data[a].purchaced_from;
var notes = data[a].notes;
var total = data[a].total;
//storing in html
html += "<tr>";
html += "<td style='vertical-align: middle;'>" + asset_number + "</td>";
html += "<td style='vertical-align: middle;'>" + id + "</td>";
html += "<td style='vertical-align: middle;'>" + room + "</td>";
html += "<td style='vertical-align: middle;'>" + _location + "</td>";
html += "<td style='vertical-align: middle;'>" + sku + "</td>";
html += "<td style='vertical-align: middle;'>" + qty + "</td>";
html += "<td style='vertical-align: middle;'>" + _value + "</td>";
html += "<td style='vertical-align: middle;'>" + total + "</td>";
html += "<td style='text-align: center; vertical-align: middle;'>" + date + "</td>";
html += "<td style='vertical-align: middle;'>" + po_number + "</td>";
html += "<td style='vertical-align: middle;'>" + purchaced_from + "</td>";
html += "<td style='vertical-align: middle;'>" + notes + "</td>";
html += "<td style='text-align: center; vertical-align: middle;'>";
html += "<a href='?id=" + id + "&room=" + room + "&asset=" + asset_number + "&location=" + _location + "&sku=" + sku + "&qty=" + qty + "&value=" + _value + "&date=" + date + "&po=" + po_number + "&where=" + purchaced_from + "¬es=" + notes + "#editModal' class=''><i class='far fa-edit fa-lg'></i></a>";
html += "</td>";
html += "<td style='text-align: center; vertical-align: middle;'>";
html += "<a href='?id=" + id + "&room=" + room + "&asset=" + asset_number + "&location=" + _location + "&sku=" + sku + "&qty=" + qty + "&value=" + _value + "&date=" + date + "&po=" + po_number + "&where=" + purchaced_from + "¬es=" + notes + "#duplicateModal' class=''><i class='far fa-clone fa-lg'></i></a>";
html += "</td>";
html += "</tr>";
}
//replacing the <tbody>
document.getElementById("data").innerHTML = html;
}
}
</script>
如果有人能告诉我如何在我的示例中使用它,我将不胜感激,我真的很想像这样在这个网站上加载我的所有表格,所以我不需要刷新保存数据(这会刷新每 250 毫秒,因此表中的数据始终与数据库保持同步)。
更新:
没错,我进行了 250 毫秒的刷新,现在桌子可以正常工作了!现在有人可以帮助我解决下一个问题吗?当新数据输入数据库时,如何在不刷新整个页面的情况下刷新表
【问题讨论】:
-
更新了很多。像 1200 在 5 分钟内
-
如果你取消注释这一行
//console.log(data); //for debugging它会输出什么?你能用这些信息更新答案吗? -
它在检查元素控制台中显示数组中的数据。它只包含表中的数据
-
@LegenJerry 有这么多刷新有问题吗?我查看了我的电脑上的负载,它似乎没有做任何重大的事情,服务器很强大。它只运行一个 mysql 查询,所以我认为这不是一个主要问题。是否有另一种方法让它在创建新数据库条目时显示新的数据库条目?还是只喜欢我是怎么做到的?
-
@CarlPiper 查看我的答案,我更新了它。根据 DataTables API,有一种刷新表格的方法。我提供的小提琴需要修改以适合您的应用,但如果它回答了您的问题,您能否将其标记为已接受?
标签: javascript jquery ajax datatables bootstrap-4