只有在PHP Mysql中插入新行时才调用Ajax

时间:2016-06-15 05:14:41

标签: php jquery mysql ajax

我正在建立一个聊天系统。我在每2秒之后发送ajax请求以获取新消息。现在的问题是,每隔2秒ajax调用后,我会再次从消息表重新加载所有消息,而不是只获取新消息..

我想要的是当第一次加载页面然后加载所有邮件然后再加载来自邮件表的新邮件,而不是一次又一次地在2秒之后获取所有邮件。以下是我的代码。

Jquery的

$(document).ready(function(){

//get new message every 2 second
 var interval = setTimeout(function () {

$("#chatting").load("get_message_ajax.php", {c_id:c_id, from_id:from_id, to_id:to_id});


}, 2000);

});

PHP

if(isset($_POST['c_id'])){

$conversation_id = isset($_POST["c_id"]) ? trim(strip_tags($_POST["c_id"])) : "";
$from_id = isset($_POST["from_id"]) ? trim(strip_tags($_POST["from_id"])) : "";
$to_id = isset($_POST["to_id"]) ? trim(strip_tags($_POST["to_id"])) : "";


//fetch all the messages of $user_id(loggedin user) and $user_two from their conversation

$stmt = $pdo->prepare("SELECT * FROM `messages` m WHERE conversation_id=:conversation_id");
$stmt->execute(array(":conversation_id"=>$conversation_id));
$m = $stmt->fetchAll(PDO::FETCH_ASSOC);
}

请帮帮我......提前致谢..

1 个答案:

答案 0 :(得分:0)

尝试这种简单快捷的解决方案

$(document).ready(function(){

var chatData = ""; // default set emty

//get new message every 2 second
 var interval = setTimeout(function () {

    $.post( "get_message_ajax.php", {c_id:c_id, from_id:from_id, to_id:to_id})
        .done(function( data ) {
            if(chatData !== data){ // if changes are exist in result then update
                $("#chatting").html(data);
            }
            chatData = data;
        }
    });

}, 2000);

});