0

私はphpが初めてで、チュートリアルを通じて学ぼうとしています。現在、チャットのチュートリアルに取り組んでいます。最近、チュートリアルでバインドを使用するように求められた問題に遭遇しましたが、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 に答える