Я использую стандартный пример чата ( http://www.phpclasses.org/blog/package/3213/post/1-Tutorial-on-Creating-an-AJAX-based-Chat-system-in-PHP. html ) с jQuery 1.7 . Каждый раз, когда я отправляю сообщение, я получаю сообщение
Использование getPreventDefault () устарело. Вместо этого используйте defaultPrevented.
Входное сообщение по-прежнему отправляется в базу данных и обрабатывается правильно, однако «добавление» к исходному источнику и, следовательно, печать на экране не работает. Как я могу сделать эту работу и предотвратить сообщение? Мой main.js находится здесь:
var lastTimeID = 0;
$(document).ready(function() { $('#btnSend').click( function() { sendChatText(); $('#chatInput').val(""); }); startChat(); }); function startChat(){ setInterval( function() { getChatText(); }, 1000); } function getChatText() { $.ajax({ type: "GET", url: "/taboo/game/refresh.php?lastTimeID=" + lastTimeID }).done( function( data ) { var jsonData = JSON.parse(data); var jsonLength = jsonData.results.length; var html = ""; for (var i = 0; i < jsonLength; i++) { var result = jsonData.results[i]; html += '<div ' + result.role + '">(' + result.mes_time + ') <b>' + result.username +'</b>: ' + result.message + '</div>'; lastTimeID = result.messageID; } $("#reply").append(html); }); } function sendChatText(){ var chatInput = $('#chatInput').val(); if(chatInput != ""){ $.ajax({ type: "GET", url: "/taboo/game/submit.php?chattext=" + encodeURIComponent( chatInput ) }); } }
Здесь отредактированная версия после первых комментариев: var lastTimeID = 0;
$(document).ready(function() { $('#btnSend').click( function() { sendChatText(); $('#chatInput').val(""); }); startChat(); }); function startChat(){ setInterval( function() { getChatText(); }, 1000); } function getChatText() { $.ajax({ type: "GET", url: "/taboo/game/refresh.php?lastTimeID=" + lastTimeID, success: function( data ){ var jsonData = JSON.parse(data); var jsonLength = jsonData.results.length; var html = ""; for (var i = 0; i < jsonLength; i++) { var result = jsonData.results[i]; html += '<div ' + result.role + '">(' + result.mes_time + ') <b>' + result.username +'</b>: ' + result.message + '</div>'; lastTimeID = result.messageID; } $("#reply").append("<p>Hello</p>"); console.log(html); console.log("H"); } }); } function sendChatText(){ var chatInput = $('#chatInput').val(); if(chatInput != ""){ $.ajax({ type: "GET", url: "/taboo/game/submit.php?chattext=" + encodeURIComponent( chatInput ) }); } }
Здесь вводится вход:
<div class="reply" id="response"></div> <div id="ajaxForm"> <input type="text" id="chatInput" /><input type="button" value="Send" id="btnSend" /> </div>
Это соединение с БД:
class chatClass { public static function getRestChatLines($messageID) { $arr = array(); $jsonData = '{"results":['; include "/Applications/XAMPP/xamppfiles/htdocs/taboo/game/connectToDB.php"; $_db->query("SET NAMES utf8"); $statement = $_db->prepare("SELECT * FROM messages WHERE message_id > ? and mes_time >= DATE_SUB(NOW(), INTERVAL 1 HOUR)"); $statement->bindParam('i', $messageID); $statement->execute(array($messageID)); while ($statement->fetch()) { $line->message_id = $messageID; $line->game_id =$gameID; $line->user_name = $username; $line->role = $role; $line->message = $message; $line->ordering = $ordering; $line->mes_time = date('H:i:s', strtotime($mes_time)); $arr[] = json_encode($line); } $link = null; $jsonData .= implode(",", $arr); $jsonData .= ']}'; return $jsonData; } public static function setChatLines($message, $username, $role, $gameID, $ordering) { include "/Applications/XAMPP/xamppfiles/htdocs/taboo/game/connectToDB.php"; $statement = $_db->prepare( "INSERT INTO messages(message, user_name, role, game_id, $ordering) VALUES(?, ?, ?, ?,)"); $statement->execute(array($message, $username, $role, $gameID, $ordering)); $link = null; } } ?>
И отправьте в середине, который передает данные из main.js (первый код) в DB php (как раз перед этим).
<?php session_start(); require_once( "/Applications/XAMPP/xamppfiles/htdocs/taboo/game/connectToDB.php" ); require_once( "/Applications/XAMPP/xamppfiles/htdocs/taboo/game/chatClass.php" ); $message = htmlspecialchars( $_GET['chattext'] ); echo $message; $username=$_SESSION['username']; $ordering = $_SESSION['ordering']; ++$ordering; $_SESSION['ordering'] = $ordering; chatClass::setChatLines( $message, $username, $_SESSION['role'], $_SESSION['gameID'], $ordering); ?>
Это обновление, которое периодически обновляет и проверяет наличие обновлений.
<?php require_once( "/Applications/XAMPP/xamppfiles/htdocs/taboo/game/connectToDB.php" ); require_once( "/Applications/XAMPP/xamppfiles/htdocs/taboo/game/chatClass.php" ); $message_id = intval( $_GET[ 'lastTimeID' ] ); $jsonData = chatClass::getRestChatLines( $message_id ); print $jsonData; ?>
Это все элементы, связанные с чатом, который не работает. Заранее спасибо за вашу помощь – я старался все, что мог найти на этом форуме, и другие, и ничего не возвращает мой текст обратно в лук
$("#reply").append("<p>Hello</p>");
это выберет элемент с id = "reply", но в вашем html нет id="reply"
вы можете добавить его
$('#response').append("<p>Hello</p>")
это выберет тег с id="response"
и добавит привет