0

我是 php 新手,我正在尝试通过教程学习。现在,我正在编写一个聊天教程。最近,我遇到了一个问题,教程要求我使用 bind,但我认为它不再适用于 jquery。我正在尝试将消息扔到我的消息框。这是我的javascript的代码

    var chat = {}

    chat.fetchMessages = function () {
$.ajax({ 
    url: 'ajax/chat.php',
    type: 'post',
    data: { method: 'fetch' },
    success: function(data) {
        $('.chat .messages').html(data);
        }
    });
    }

    chat.throwMessage = function (message) {
if ($.trim(message).length != 0) {
        $.ajax({ 
        url: 'ajax/chat.php',
        type: 'post',
        data: { method: 'throw', messsage: message },
        success: function(data) {
            chat.fetchMessages();
            chat.entry.val('');
        }
    });

}

    }

    chat.entry = $('.chat .entry');
    chat.entry.bind('keydown', function(e) {
if (e.keyCode === 13 && e.shiftKey === false) {
    chat.throwMessage($(this).val());
    e.preventDefault();
}
    });


    chat.interval = setInterval(chat.fetchMessages, 4000);
    chat.fetchMessages();

这是正在发送信息的 php 文件:

    <?php
    require '../core/init.php';
    if (isset($_POST['method']) === true && empty($_POST['method']) === false) {

$chat       = new Chat();
$method     = trim($_POST['method']);

if ($method === 'fetch') {

    $messages = $chat->fetchMessages();

    if (empty($messages) === true) {
        echo 'There are currently no messages in the chat';
    } else {

        foreach($messages as $message) {
        ?>

                <div class="message">
                    <a href="#"><?php echo $message['username']; ?></a> says:
                    <p><?php echo $message['message']; ?></p>
                </div>

        <?php
        }

    }


 } else if ($method === 'throw' && isset($_POST['message']) === true) {
    $message = trim($_POST['message']);
    if (empty($message) === false) {
        $chat->throwMessage($_SESSION['user'], $message);
    }

}

    }

当我打开检查器时,所有测试都正常工作,但 php 代码似乎没有将数据放在我的消息框上。

4

2 回答 2

0

使用“绑定”只会影响现有元素,如果添加另一个元素,则该元素不会受到事件的影响。

Live 影响现有元素和将在运行时添加的元素。

于 2013-09-10T00:03:41.290 回答
0
$(document).on('keydown', chat.entry, function(e) {

    if (e.keyCode === 13 && !e.shiftKey) {
        e.preventDefault();
        chat.throwMessage( this.value );
    }

});

而不是document使用#element

于 2013-09-09T23:29:10.183 回答