Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax自动刷新-表不刷新_Javascript_Php_Jquery_Html_Ajax - Fatal编程技术网

Javascript Ajax自动刷新-表不刷新

Javascript Ajax自动刷新-表不刷新,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我的代码中有一个严重的问题,我无法修复它。 我目前正在使用Ajax设置超时并从中获取数据。 这里的问题是它没有刷新(如果我通过url进入getdata.php页面,它会刷新,但我想刷新而不进入该页面) 这是我当前的ajax脚本: <div id="tableHolder"></div> <script> $(document).ready(function(){ refreshTable(); }); function r

我的代码中有一个严重的问题,我无法修复它。 我目前正在使用Ajax设置超时并从中获取数据。 这里的问题是它没有刷新(如果我通过url进入getdata.php页面,它会刷新,但我想刷新而不进入该页面)

这是我当前的ajax脚本:

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

<script>

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

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

</script>

$(文档).ready(函数(){
刷新表();
});
函数刷新表(){
$('#tableHolder').load('getdata.php',function(){
设置超时(刷新表,1000);
});
}
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>";        
  } 
?> 


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

问题是因为
$.load
方法正在为您提供缓存数据。您需要在url中添加一些随机文本,如时间戳

你可以这样用

<script>

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

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

</script>

$(文档).ready(函数(){
刷新表();
});
函数刷新表(){
$('#tableHolder').load('getdata.php?time='+new Date().getTime(),function()){
设置超时(刷新表,1000);
});
}

您可以将
setInterval
与一些查询字符串一起使用,而不是
setTimeout

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

Settimeout通常用于一次性执行
如果要重复调用加载函数,请尝试使用setInterval

,可能应该使用
setTimeout(refreshTable(),1000)
@Nagaraju-same也可以工作,如
$所示。load
从服务器端(php)获取数据,因此我认为不会有任何缓存,除非没有缓存change@Nagaraju实际上OP是说他需要加载页面以获得更新的数据。所以,也许缓存问题是他所面临的。这个答案似乎对我有用,也许缓存总是在改变我的数据!他只想加载div,而不是页面,从php获取,这就是我的观点。@Nagaraju实际上,如果频繁点击,浏览器似乎会缓存相同api的响应。检查这个