我从 YouTube 教程中获得了一些代码,解释了如何使用本地主机服务器 (XAMPP) 使用 jquery 和 php 构建实时聊天应用程序,并且效果很好。链接如下:https://www.youtube.com/watch?v=HOcFFJr2YdE
问题: 我的问题是,当我尝试在 phpMyAdmin 的 cpanel 中的 Web 服务器上重新创建相同的内容时,该应用程序不再工作,我很确定 php 文件中的这一行有问题: $db = new mysqli("localhost","root","","聊天");因为我不知道要填写什么而不是 localhost 和 root。
这是我的文件:
聊天.php
$db = new mysqli("localhost","root","","chat");
if($db->connect_error) {
die("Connection failed:. $db->connect_error");
}
$result = array();
$message = isset($_POST['message']) ? $_POST['message'] : null;
$from = isset($_POST['from']) ? $_POST['from'] : null;
if(!empty($message) && !empty($from)) {
$sql = "INSERT INTO `chat` (`message`,`from`) VALUE ('".$message."','".$from."')";
$result['send_status'] = $db->query($sql);
}
//print messages
$start = isset($_GET['start']) ? intval($_GET['start']) : 0;
$items = $db->query("SELECT * FROM `chat` WHERE `id` >" . $start);
while($row = $items->fetch_assoc()){
$result['items'][] = $row;
}
$db->close();
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
echo json_encode($result);
index.html
<body>
<div id="messages"></div>
<form>
<input type="text" id="message" autocomplete="off" autofocus placeholder="Type message">
<input type="submit" value="Send">
</form>
</body>
index.js
var from = null;
var start = 0;
var url = 'http://localhost/chat.php';
$(document).ready(function() {
from = prompt('Please enter your name');
$('form').submit(function(e) {
$.post(url, {
message: $('#message').val(),
from: from
});
$('#message').val('');
return false;
});
setInterval(function() {
load();
},500)
});
function load() {
$.get(url + '?start=' + start, function(result) {
if(result.items) {
result.items.forEach(item => {
start = item.id;
$('#messages').append(renderMessage(item));
});
$('#messages').animate({scrollTop: $('#messages')[0].scrollHeight});
}
});
}
function renderMessage(item) {
let time = new Date(item.created);
time = `${time.getHours()}:${time.getMinutes() < 10 ? '0' : } ${time.getMinutes()}`;
return `<div class="msg"><p>${item.from}</p>${item.message}<span>${time</span></div>`;
}
请记住,它适用于本地主机服务器,但不适用于我的 Web 服务器,因此与任何 html 或 js 代码无关,但可能与链接正确的服务器或路径或类似内容有关。
最佳答案
您需要替换此行
$db = new mysqli("localhost","root","","聊天");
与您的实际数据库参数。
该行应如下所示:
//替换为实际参数
$db = mysqli_connect("服务器名","数据库名","密码","用户名");
服务器名称大多是 localhost。
关于jquery - 如何使用我的网络服务器而不是本地主机来进行消息聊天应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61979904/