AJAX同时发布到不同的PHP页面

时间:2015-01-21 16:43:02

标签: javascript php jquery ajax

我有一个页面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));

    }

}

1 个答案:

答案 0 :(得分:1)

整个想法是user.php是应用程序用户的常见“视图”(mvc model),并且通过使用查询参数,您必须仅为该用户获取信息。您已经选择使用AJAX(这是js并且仅在应用程序的视图层下运行,在本例中是用户的浏览器),因此您需要让一些js代码监听某些操作以完成两件事:让php控制器层更新查询参数id,然后再次运行ajax请求获取数据库数据并更新html字段。