我是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代码似乎没有将数据放在我的消息框中。
答案 0 :(得分:0)
$(document).on('keydown', chat.entry, function(e) {
if (e.keyCode === 13 && !e.shiftKey) {
e.preventDefault();
chat.throwMessage( this.value );
}
});
而不是document
而不是#element
答案 1 :(得分:0)
使用“bind”时,只会影响现有元素,如果添加其他元素,则该元素不会受到该事件的影响。
实时会影响将在运行时添加的现有元素和元素。