AJAX:用收集的数据中的特定div替换div的内容

时间:2014-02-19 00:08:20

标签: javascript jquery html css ajax

对我来说,看起来是正确的,但我没有经历过最轻微的AJAX经历了几个小时的尝试,尝试了许多变化,包括过滤器,这一切都没用。这是我现在所拥有的,我看不出它有什么问题。

正在发生的事情是,如果我只是刷新页面,就不会像往常那样显示聊天消息。

我想简单地尝试完成的是聊天界面,如果它有任何相关性。

以下是正在发生的事情的实例:http://www.mixpix.eu/chat/chat.php?r=G97NxXy4exbLQPFU

$(document).ready(function() {
            var interval = setInterval(function() { 
                $.ajax({
                    dataType: "html",
                    url: 'chat.php?r=' + <?php echo "'" .$_GET['r']. "'"; ?> , 
                    success: function(data) {
                        var trim = $(data).find('.message_window');
                        $('.message_window').replaceWith(trim);
                    }
                });
            }, 1000);
});

这是我的身体标签的内容:

<div class="wrapper">
        <div class"inbox_window" id="style-3">

        </div>
        <div class="message_window" id="style-3">
            <table width="100%">
                <p class="talking_to"><?php echo getFirstnamebyID($_GET['r']); ?></p>
                <?php echo displayMessages(); ?>
            </table>
        </div>
        <form class="submit_form" method="post" <?php echo 'action="chat.php?r='.$_GET['r'].'"' ?>>
            <input type="text" name="message" placeholder="Type message here" />
            <input type="submit" value="Send" name="s_say"/>
        </form>
    </div>
php中的

displayMessages()函数:

function displayMessages() {
    $user_id = getUserID();
    $sql = mysql_query(strip_tags("SELECT * FROM inbox WHERE (send_id='".$user_id."' OR send_id='".$_GET['r']."') AND (rec_id='".$_GET['r']."' OR rec_id='".$user_id."') ORDER BY timestamp;"));
    if (mysql_num_rows($sql) != 0) {
        while($row = mysql_fetch_assoc($sql)) {
            if ($row['send_id'] == $user_id) {
                echo '<tr><td><p class="sm">'. $row['messages'] .'</p></td></tr>';
            } else if ($row['send_id'] == $_GET['r']) {
                echo '<tr><td><p class="rm">'. $row['messages'] .'</p></td></tr>';
            } else {
                echo "Unable to display messages.";
            }
        }
    } else {
        echo "Be the first to say hello!";
    }
}

我非常感谢任何人的帮助,因为它让我有点疯狂。

1 个答案:

答案 0 :(得分:0)

你在这里发生了一些会导致你出现问题的事情......

在JavaScript方面,setInterval是一种保持内容最新的hacky方式,使用套接字可以更好地实现。如果你真的想这样做,返回整个文档(包括HTML head)不是你最好的选择 - 也许发送一个额外的查询参数,告诉你的PHP只发送消息部分,或者更好但是,自您上次检查的时间戳以来添加的消息。

在您的标记中,您不能将段落标记直接放在表格或原始文本中,因为可以从PHP返回。无论如何,你并没有真正将它用作表格,列表可能更具语义性。