2017-05-04 65 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而不是如果你想重複調用加載函數