我有一个页面user.php,它是不同用户页面的模板(例如user.php?id = 5)。我运行一个AJAX脚本来监视数据库,以查找与每个用户对话期间发布的新消息。
我的问题是,当我向user.php发送消息?id = 5时,它也出现在user.php上?id = 1等。
如何确保实时消息仅发送给正确的用户?
user.php中的脚本:
var refreshId = setInterval(function () {
$.ajax({
url: 'another_file.php',
data: { 'action': '<?php echo $lastID; ?>' },
dataType: 'json',
type: 'post',
success: function (data) {
var avatar = '<img src="images/avatars/' + data[1].avatar + '"/>';
if (compare_id != data[0].cr_id) {
$('#responses').prepend("<div class='row'><div class='col-xs-12'><div class='post_container_left_small' style='float:left;'><div class='reply_avatar'><div id='add_button_small'>" + avatar + "</div></div><div class='reply_text'><h3><span class='post_time'>now</h3>" + data[0].reply + "</div></div></div></div>");
}
compare_id = data[0].cr_id;
},
error: function(xhr, desc, err) {
console.log(xhr);
console.log("Details: " + desc + "\nError:" + err);
}
});
}, 7500);
它调用的php类函数:
public static function getLast($lastID) {
$lastID = (int)$lastID;
$result = mysql_query("SELECT * FROM mc_conversation_reply ORDER BY cr_id DESC LIMIT 1");
$userC = new UserTools();
while($row = mysql_fetch_array($result)) {
//echo json_encode($row);
$userRObj = $userC->get($row['user_id_fk']);
//echo json_encode($userRObj);
echo json_encode(array($row,$userRObj));
}
}
答案 0 :(得分:1)
整个想法是user.php是应用程序用户的常见“视图”(mvc model),并且通过使用查询参数,您必须仅为该用户获取信息。您已经选择使用AJAX(这是js并且仅在应用程序的视图层下运行,在本例中是用户的浏览器),因此您需要让一些js代码监听某些操作以完成两件事:让php控制器层更新查询参数id,然后再次运行ajax请求获取数据库数据并更新html字段。