Javascript刷新DIV

时间:2014-10-18 18:53:28

标签: javascript php jquery refresh chat

所以,我有这个脚本每5秒刷一次我的Div。在前几分钟左右,脚本工作得很好但是在5-10分钟之后它不再刷新div或者Div需要很长时间才能刷新。我对javascript一无所知,所以有人可以告诉我问题是什么。该脚本用于刷新我的聊天室。这是代码:

<script type="text/javascript">
$(document).ready(function(){
  refreshTable();
});

function refreshTable(){
    $('#puu').load('<?php echo $kakka; ?>', function(){
       setTimeout(refreshTable, 5000);
    });
}
</script>

只是确定这是整个代码:

<?php
include '../dbcKIRJAUTUNUT.php';
page_protect();
error_reporting(0);
ini_set('display_errors', 0);
 ?>

<?php
$rs = mysql_query("SELECT * FROM users WHERE id='$_SESSION[user_id]'");
while 
($row= mysql_fetch_array($rs))
{$starter= $row['id'];
 $user_name= $row['user_name'];}


$starterID=$starter;
$companyID=$_GET['id'];


 $input = $_POST['viesti'];


 date_default_timezone_set('Europe/Helsinki');
 $timestamp = date('h:i', time());


 $file = $companyID."and".$starterID.".txt";


 if (file_exists($file)) {
 $kakka = $companyID."and".$starterID.".txt";
 } else {
 $kakka = $starterID."and".$companyID.".txt";
 }


 $current = file_get_contents($kakka);

 if(isset($_POST['viesti']) && $_POST['viesti'] != null){
 $shipuli= "<b>$user_name</b> <br> $input $timestamp\n<br>";
 file_put_contents($kakka, $shipuli, FILE_APPEND | LOCK_EX);
 }
 echo '<div id="puu">'.$current.$shipuli.'</div>';

 ?>
 <html>
 <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

 <script src="http://code.jquery.com/jquery-latest.js"></script>
 <script type="text/javascript">
 $(document).ready(function(){
 refreshTable();
 });

 function refreshTable(){
 $('#puu').load('<?php echo $kakka; ?>', function(){
       setTimeout(refreshTable, 5000);
    });
 }
 </script>
 <style>
 #puu{
 width: 300px;
 height: 450px;
 overflow: scroll;
 }
 </style>
 </head>
 <body>

 <form method="post" id="norefesh">
 <input type="text" name="viesti" autocomplete="off">
 <input type="submit">
 </form>

<form method="post">
<input type="submit" name="refresh" value="Päivitä">
</form>


 </body>
 </html>

2 个答案:

答案 0 :(得分:0)

我认为您需要为setInterval更改函数setTimeout。

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

 function refreshTable(){
   $('#puu').load('<?php echo $kakka; ?>', function(){
   setInterval(function(){

     }, 5000);

   });
}

答案 1 :(得分:0)

当你确认它工作2-3分钟然后它的延迟似乎是内存泄漏。与刷新页面时相比,检查浏览器在5分钟后是否消耗了太多内存。另请参阅jQuery load() method memory leak?

根据链接中的建议,在$.ajaxSetup({ cache: false });调用之前尝试.load()