【发布时间】:2017-09-12 11:26:35
【问题描述】:
我正在尝试使用 php、mysql 和 ajax 创建小型聊天应用程序。使用 ajax 函数后,输出中未显示消息。但数据正在传输到数据库。
索引页面代码
<?php
require('includes/core.inc.php');
if(isset($_POST['send'])){
if(send_msg($_POST['sender'], $_POST['message'])){
echo 'Message sent.';
}else{
echo 'message faild to sent.';
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<!--Page title-->
<title>chat application</title>
<!--css stylesheet-->
<link type="text/css" rel="stylesheet" href="public/css/main.css"/>
</head>
<body>
<div id="input">
<form action="index.php" method="post">
<lable>Enter name:<input type="text" name="sender"/></lable>
<lable>Enter message:<input type="text" name="message"/></lable><br/>
<input type="submit" name="send" value="send message"/>
</form>
</div><!--input-->
<div id="messages">
</div> <!--Messages-->
<!--JAVASCRIPT-->
<script type="text/javascript" src="scripts/js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="scripts/js/auto_chat.js"></script>
</body>
</html>
chat.php
<?php
require('../../includes/database/connect.db.php');
require('../../includes/functions/chat.func.php');
$messages = get_msg();
foreach($messages as $message){
echo '<strong>'.$message['sender'].' sent</strong><br/>';
echo $message['message'].'<br/><br/>';
}
?>
聊天功能
<?php
function get_msg(){
$query = "SELECT Sender,Message FROM chat";
$run = mysql_query($query);
$messages = array();
if($run === FALSE) {
die(mysql_error()); // TODO: better error handling
}
while($message = mysql_fetch_assoc($run)){
$messages[] = array('sender'=>$message['Sender'], 'message'=>$message['Message']);
}
return $messages;
}
function send_msg($sender, $message){
if(!empty($sender) && !empty($message)){
$sender = mysql_real_escape_string($sender);
$message = mysql_real_escape_string($message);
$query = "INSERT INTO chat VALUES (null , '{$sender}', '{$message}')";
if($run = mysql_query($query)){
return true;
}else{
return false;
}
}else{
return false;
}
}
?>
我添加的 ajax 部分就是这个。我认为这是问题所在,但我找不到它。我以前没有使用过 jquery 和 ajax。那么有什么前置条件吗?
$(document).ready(function() {
var interval = setInterval(function() {
$.ajax({
url: 'scripts/php/chat.php',
success: function(data){
$('#messages').html(data);
}
});
}, 1000);
});
我有数据库连接文件。但没有问题。如果需要,我可以发布它。请帮帮我
【问题讨论】:
-
当您调试它时,它具体在哪里/如何失败?观察浏览器调试工具中的 AJAX 操作。他们成功了吗?是否以预期的时间间隔向服务器发出 AJAX 请求?服务器的响应是什么?
-
我是第一次使用 AJAX。如何将ajax添加到浏览器。我正在使用火狐浏览器。没有错误响应。但消息不显示在索引页面中。但是当我发送消息时它会进入数据库。
-
在 Firefox 中,我想首选的调试工具仍然是 Firebug 插件。添加 Firefox 并使用它来检查 AJAX 代码发出的网络请求。您此时可能只是忽略了一些错误。
-
在 Firefox 中,
下的开发者工具无需安装任何东西即可使用。 -
在浏览器中单击鼠标右键,选择“检查”选项,然后选择“控制台”选项卡。对于 Ajax 请求,您将有一个 XHR 条目,您可以打开并查看发送和接收的内容。您还可以从网络选项卡中获取此信息。