javascript Setinterval打印来自json的重复数据

时间:2015-05-04 06:53:09

标签: javascript php json

您好我有这个代码服务器端来显示在线用户:

header('Content-Type: application/json');
$array = array();
include 'db.php';
$res = mysqli_query($db, "SELECT * FROM `chatters` WHERE status = 1");//users are online
if(mysqli_num_rows($res) > 0){
    while($row = mysqli_fetch_assoc($res)){  
        $array[]= $row;        }
}
echo json_encode($array);

作为回应,我得到了这个:

[{"row_id":"40","name":"Krishan kumar","sex":"male","age":"24","country":"India","seen":"20:58:14", "status": "1"}]

所以我在节目页面上有这个代码来向用户展示:

 $(document).ready(function() {                               
 setInterval(function(){
  $.ajax({
       url: 'json.php',
       dataType: "json",
       type: 'GET',
       success: function(data) {
          if (data) {
            var len = data.length;
            var txt = "";
            for (var i = 0;i<len; i++) {
                txt += "<p>"+data[i].name + "</p>";
            }
            $(".showUsers").append(txt);
            console.log(txt);
          }

       }
    });
  }, 2000);
 });

但问题是每隔2秒就会出现这样的名字:

Krishan kumar
Krishan kumar
Krishan kumar
Krishan kumar

它继续...... 我想显示只打印一次的用户名,同时仍然使用setinterval()打开请求以检查新用户是否在线。如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

请在添加新列表之前清除以前的用户列表。使用以下代码

 setInterval(function(){
 $(".showUsers").html('');
 $.ajax({ ....