【发布时间】:2016-05-17 03:46:54
【问题描述】:
我正在使用带有 jQuery 1.7 的聊天框 (http://www.phpclasses.org/blog/package/3213/post/1-Tutorial-on-Creating-an-AJAX-based-Chat-system-in-PHP.html) 的标准示例。每次我提交我都会收到消息
不推荐使用 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 )
});
}
}
这里是第一个 cmets 之后的编辑版本: 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;
?>
这些都是与聊天框相关但不起作用的元素。 在此先感谢您的帮助-我一直在尝试在此论坛和其他论坛中可以找到的所有内容,但没有任何内容可以将我的文本返回给凉亭
【问题讨论】:
-
使用
getPreventDefault()的行在哪里? -
我没有使用该方法的行,也没有 import .js 或任何使用该行的东西。
-
嗯,控制台错误应该提供发生错误的行,不是吗?
-
我试图更改 jQuery 版本(似乎是一些错误),包括 $(document) 下的方法,使用 return、print、append 和 appendTo 的所有潜在变体但没有停止错误并且没有打印文本。请帮忙...
-
" jquery-1.7.js:3506:" 控制台输出 - 不是很有帮助。
标签: javascript php jquery printing