我似乎无法解决这个问题。过了几天,重写一次后仍然没有进展,比我能指望的还多。
这是Javascript(与html相同的页面)
摘要:用户在输入框中键入文本。这将被发送处理,然后被发回并显示在html页面上的ID为DisplayText的框中。
<script type="text/javascript">
function SendText() {
if (document.getElementById("Text").innerHTML == "") {
return;
} else
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("DisplayText").innerHTML = xmlhttp.responseText;
}
}
Text = document.getElementById("Text").value;
xmlhttp.open("GET", "php/Test.php?Chat=" + Text, true);
xmlhttp.send();
}
}
</script>
这是HTML(与脚本相同的页面)
<div>
<p>
<span id="DisplayText">
TEXT GOES HERE
</span>
</p>
</div>
<form action="" onsubmit="SendText();">
<input type="" name="" id="Text" />
<input type="submit" value="Send" name="Send" />
</form>
PHP代码在这里
<?php
session_start();
include ("Connect.php");
$Connection = mysqli_connect("localhost", "root", "", "chatsystem");
$Create = "CREATE TABLE " . $_SESSION["Username"] . "Chat(Username VARCHAR(255), Chat VARCHAR(255))";
////////////////////////////////////////////////////////////////////////////////
$DatabaseExist = $Connection->query("SELECT 1 FROM " . $_SESSION["Username"] . "Chat");
if ($DatabaseExist !== false) {
echo "Database exists";
doSomething();
} else {
echo "Database does not exist";
mysqli_query($Connection, $Create);
doSomething();
}
////////////////////////////////////////////////////////////////////////////////
function doSomething() {
// Get the sent chat
$Input = $_REQUEST["Chat"];
// Insert into the database the new chat sent
mysqli_query($Connection, "INSERT INTO " . $_SESSION["Username"] . "chat (`Username`, `Chat`) VALUES ('$_SESSION[Username], '$Input')");
// Select everything from the database
$Result = $Connection->query("SELECT * FROM " . $_SESSION["Username"] . "Chat");
// Display everything from the database in an orderly fashion
// --
// For the length of the database
// Append to a variable the next table row
// --
while ($Row = $Result->fetch_array()) {
// Make Variable accessable
global $Input;
// Append username to the return value
$Input = $Input . $Row["Username"] . " : ";
// Append chat to the return value
$Input = $Input . $Row["Chat"] . "<br />";
}
}
// Will return the value
echo $Input;
?>
我与数据库的连接很好。我在其他有效的网页上使用它。 所以我们假设这不是问题。 :P
任何知道或可能想到错误的人的任何帮助或见解,我将非常感激。 我是AJAX的新手。
答案 0 :(得分:1)
您使用
进行了错误的测试if (document.getElementById("Text").innerHTML == "")
它应该与您在AJAX中发送文本的方式相同
if (document.getElementById("Text").value == "")
请检查其value
属性,而不是innerHTML
,因为input
元素没有html内容..
请注意,因为您的代码对SQL injection attacks是开放的。
答案 1 :(得分:0)
尝试使用AJAX长轮询技术进行聊天应用。这是示例
答案 2 :(得分:0)
第一名使用输入的value
属性代替innerHTML
例如。使用
if (document.getElementById("Text").value == "")
而不是
if (document.getElementById("Text").innerHTML == "")
第二名:在表单的return false;
事件中使用onsubmit
;当您使用ajax时,阻止当前页面刷新。否则页面将刷新,它不会显示php页面的输出,
例如。使用
onsubmit="SendText(); return false;"
而不仅仅是
onsubmit="SendText();"