jquery - 如何使用我的网络服务器而不是本地主机来进行消息聊天应用程序?

标签 jquery server localhost chat

我从 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/

相关文章:

php - 使用 PHP 触发 jQuery 函数

linux - 为什么 Write 系统调用不向套接字文件写入任何内容?

server - 获取Dart中的所有子类

php - 调用未定义函数mysql_connect()错误

mysql - 如何完成 MAMP Wordpress 转换

java - 仅限 Spring Boot webapp localhost

jquery - 具有非标准 http 状态代码的 $.ajax 函数的成功处理程序

jquery - 如何检查一个链接是否被访问过?

javascript - 模态框高度宽度根据iframe的高度宽度固定

java - smtp 和 pop3 如何与 localhost 一起使用