2017-05-04 101 views
1

我在我的代码有一个严重的问题,我无法设法解决它。 我目前使用Ajax setTimeout并从中获取数据。 这里的问题是,它不刷新(如果我通过url刷新页面getdata.php刷新,但我想刷新而不去该页面)。阿贾克斯自动刷新 - 表不刷新

这是我目前AJAX脚本:

<div id="tableHolder"></div> 

<script> 

    $(document).ready(function(){ 
    refreshTable(); 
    }); 

    function refreshTable(){ 
     $('#tableHolder').load('getdata.php', function(){ 
     setTimeout(refreshTable, 1000); 
     }); 
    } 

</script> 

在访问getdata.php的代码是下列操作之一:

<?php 

require_once("config.php"); 
$req2 = mysqli_query($con, 'select user_id, user_name from users LIMIT 5');                   
    while ($dnn = mysqli_fetch_array($req2)) { 
    echo "<table>"; 
    echo "<tr>"; 
    echo "<td>" . $dnn['user_id'] . "|</td>"; 
    echo "<td>" . $dnn['user_name'] . "</td>"; 
    echo "</tr>"; 
    echo "</table>";   
    } 
?> 

我找不到任何解决这个问题,所以我最后的希望在你身上StackOverflow!

+2

可能你应该使用'setT imeout(refreshTable(),1000);' – Nagaraju

+0

@Nagaraju同样也可以工作,如https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_win_settimeout1 –

回答

2

问题是因为$.load方法正在为您提供缓存数据。您需要添加一些随机文本中的网址一样戳

您可以使用这样

<script> 

    $(document).ready(function(){ 
    refreshTable(); 
    }); 

    function refreshTable(){ 
     $('#tableHolder').load('getdata.php?time=' + new Date().getTime(), function(){ 
     setTimeout(refreshTable, 1000); 
     }); 
    } 

</script> 
+0

'$ .load'正在从服务器获取数据方(PHP)所以我认为那里不会是任何缓存,除非没有变化 – Nagaraju

+0

@Nagaraju其实OP是说他需要加载页面以获取更新的数据。所以缓存问题也许是他面临的问题。 –

+0

这个答案似乎适用于我,可能缓存总是在改变我的数据! – TesteAmaroPT

0

而不是setTimeout可以使用setInterval一些查询字符串

function refreshTable(){ 
    setInterval(function(){ 
    $('#tableHolder').load('getdata.php?v=1') 
    }, 1000); 
} 
0

的setTimeout通常用于一个时间执行 尝试setInterval而不是如果你想重复调用加载函数