JQuery和AJAX更新页面数据而不刷新页面,只更新尚未存在的数据

时间:2014-07-19 16:15:51

标签: jquery ajax chat

我读了一个问题this was the answer

  

您可以从官方jquery站点了解Jquery Ajax:

     

网站链接 - > https://api.jquery.com/jQuery.ajax/

     

如果您不想使用任何点击事件,则可以设置计时器   定期更新。

     

下面的代码可能只是帮助您举例。

function update() {
$.get("response.php", function(data) {
$("#some_div").html(data);
window.setTimeout(update, 10000);
  });
}
     

上面的函数会在每10秒后调用一次并从中获取内容   response.php并在#some_div中更新...

现在我正在聊天网站。简单。但是,如果让我们说从对话开始就发送了200个消息。如果我每次更新整个聊天数据,它将不得不再次写入200个消息,然后将写入1个新的消息,即第二百个消息。我的意思是我只希望不存在的数据更新而不是插入.. :)希望你明白我的意思。而且,在所有问题中,他们要么使用$ .get请求,要么使用jquery的load()函数编写一个神秘的php文件的路径,但从不告诉php文件中究竟是什么:) 另外,请不要阻止我寻求帮助,就像我上次一样:'(这真是令人心碎的真正被踢出这么棒的社区:)。

2 个答案:

答案 0 :(得分:0)

后端(或服务器端)必须是处理和返回更新(尚未存在的数据)的人。

前端(或客户端)唯一可以做的就是从服务器获取响应,将其附加到容器中。

答案 1 :(得分:-1)

你需要改进你的php以返回所需的消息,不要返回html,返回json更容易工作。

file.php

$message1 = "message 1";
$message2 = "message 2";
$allMessages = json_encode(array($message1, $message2));
echo $allMessages;

当调用ajax时,请求将发送类似:{" message1"," message2"}

javascript代码

//when document is load
$(function(){
window.setInterval(function(){   
    //do ajax every x seconds     
    $.ajax({
        type: "GET",
        url: "file.php",
        dataType: "json",
        success: function(results){
            //results have a json
            results = JSON.parse(json);
            //iterate each message
            for(var i in results) {
                //append each message to the chat div
                $("#chat").append(results[i]);
            }
        }
    });
}, 1000);

});

我希望它可以帮到你