所以我有一个从数据库中提取信息的表格,我想知道如何在不重新加载整个页面的情况下刷新信息。
答案 0 :(得分:36)
您需要一个显示您的表格的getTable.php
页面,而不是其他内容:没有页眉,页脚等。
PHP(getTable.php) - 这可以是任何服务器端代码(asp,html等)。
<?php
echo '<table><tr><td>TEST</td></tr></table>';
?>
然后,在您的JS中,您可以使用load()
方法轻松刷新表格:
<强> HTML 强>
<div id="tableHolder"></div>
<强> JS 强>
<script type="text/javascript">
$(document).ready(function(){
refreshTable();
});
function refreshTable(){
$('#tableHolder').load('getTable.php', function(){
setTimeout(refreshTable, 5000);
});
}
</script>
答案 1 :(得分:9)
使用ajax,以下示例在jQuery中:
$(function() {
var prevAjaxReturned = true;
var xhr = null;
setInterval(function() {
if( prevAjaxReturned ) {
prevAjaxReturned = false;
} else if( xhr ) {
xhr.abort( );
}
xhr = $.ajax({
type: "GET",
data: "v1="+v1+"&v2="+v2,
url: "location/of/server/script.php",
success: function(html) {
// html is a string of all output of the server script.
$("#element").html(html);
prevAjaxReturned = true;
}
});
}, 5000);
});
成功函数假定您的服务器脚本在id为'element'的元素中输出要替换的html。
答案 2 :(得分:6)
您应该有一个页面返回信息并使用Ajax / jQuery提取数据。
<div class="result"></div>
setInterval(function() {
$.get('table.php', function(data) {
$('#result').html(data);
});
}, 5000);
答案 3 :(得分:2)
这是您使用的另一个选项。此解决方案使用的IIFE优于setInterval。您可以在上面的链接中阅读有关IIFE的更多信息。
JAVASCRIPT:
var $results = $('#results'),
loadInterval = 5000;
(function loader() {
$.get('script.php', function(html){
$results.hide(200, function() {
$results.empty();
$results.html(html);
$results.show(200, function() {
setTimeout(loader, loadInterval);
});
});
});
})();
HTML:
<div id="results"></div>
答案 4 :(得分:1)
setTimeout(function(){
jqueryFunction(Args);
},100);
会工作......
100 = 100毫秒
答案 5 :(得分:1)
以下适用于JQuery Datatables 1.10
`var tableName;
//Set AJAX Refresh interval.
$(function() {
setReloadInterval(10); //Refresh every 10 seconds.
}
//Because function takes seconds we * 1000 to convert seconds to milliseconds.
function setReloadInterval(reloadTime) {
if(reloadTime > 0)
internalId = setInterval("reloadTable()", (reloadTime * 1000);
}
//Auto Refresh JQuery DataTable
function reloadTable() {
tableName.ajax.reload();
}
//Table defined...
$(document).ready(function () {
tableName = $('#tableName').DataTable({
"sAjaxSource": "/someUrl",
});`