Javascript 我希望在对话div中显示最后提交的消息,而不刷新和重新加载页面,如whatsapp、facebook messenger和skype
我正在开发聊天系统,但我有一个问题,当我向另一个用户发送消息时,他在刷新页面之前无法看到消息。我想要像facebook messenger,whatsapp,skype可以直接向接收者显示消息,而无需刷新或在页面中重新加载。我对如何处理它感到非常困惑。我还从该网站添加了现成的刷新和更新功能StackOverflow并添加到我的网站源代码中,但我收到一个错误,未定义的索引:hash in第9行的C:\Xamp\htdocs\myfiles\startcon.php。我能做什么请解决这个问题。我被困住了,不知道该怎么办 您需要使用ajax请求来完成此操作。 大约一年前我也做过同样的事情,我有代码。Javascript 我希望在对话div中显示最后提交的消息,而不刷新和重新加载页面,如whatsapp、facebook messenger和skype,javascript,jquery,ajax,jquery-mobile,Javascript,Jquery,Ajax,Jquery Mobile,我正在开发聊天系统,但我有一个问题,当我向另一个用户发送消息时,他在刷新页面之前无法看到消息。我想要像facebook messenger,whatsapp,skype可以直接向接收者显示消息,而无需刷新或在页面中重新加载。我对如何处理它感到非常困惑。我还从该网站添加了现成的刷新和更新功能StackOverflow并添加到我的网站源代码中,但我收到一个错误,未定义的索引:hash in第9行的C:\Xamp\htdocs\myfiles\startcon.php。我能做什么请解决这个问题。我被困
我写得不多。我会把它上传到dropbox,然后带着链接回来 您需要的功能与普通PHP应用程序提供的功能略有不同 当有人访问您的页面时,您需要设置到服务器的持久套接字连接,以便在用户之间传递新消息
看看,或者。仅使用PHP执行此操作将非常困难。很抱歉,您需要花时间才能理解我的代码。这是一个复杂的php。 但我为你找到了一个合适的解决方案。这是演示,你也可以下载
最好的当收到消息时,执行ajax请求,根据用户的id by desc limit选择用户,这将为您提供所需的结果确定。当我压缩文件并将其上传到dropbox时,我会尽快回来。谢谢Ahmad bro。我会等你的。对不起,我沉默了两天。我在开发一些应用程序。但我今天为你创建了一个项目,它将与聊天自动刷新一起简单易懂。这是从dropbox下载的链接,收到此消息后请告诉我。非常感谢您的回复,艾哈迈德兄弟,但我的问题非常复杂,只有我自己才能解决。没有人能够解决这个问题。只有我自己才能解决。再次谢谢你。我以为你想在不刷新页面的情况下显示两个对手之间的消息。这就是为什么我为您这样做的原因,因为您会在其中找到这个解决方案。尽管您认为Ajax调用是其中的一部分,但它并不是完整的解决方案。原则上,您需要将消息从javascript发布到服务器后端,附加一个javascript回调函数来侦听服务器响应,然后更新客户端页面。是的。。用socket推送,当消息传入时,就应该执行ajax,但是速度是应该注意的。
<?php
session_start();
if(!isset($_SESSION['user_id']) && empty($_SESSION['user_id'])){
header("Location:login.php");
}
include 'connect.php';
include 'functions.php';
$my_id = $_SESSION['user_id'];
$hash = $_GET['hash'];
if(isset($_POST['message']) && !empty($_POST['message'])){
$new_message = $_POST['message'];
mysql_query("INSERT INTO `messages` VALUES('','$hash','$my_id','$new_message')");
header('Location: startcon.php?hash='.$hash);
}
?>
<link rel='stylesheet' href='css.css' />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
<script type="text/javascript">
var auto_refresh = setInterval(
function ()
{
$('#innerconversations').load('startcon.php').fadeIn("slow");
}, 5000); // refresh every 5 seconds
</script>
<header>
<div id="logo">
<img src="logo.jpg" height="35px" width="35px">
</div>
<div id="options">
<a href='profile.php'>Profile</a>   
<a href="conversation.php">Messenger</a>    
<a href="friends.php">Friends</a>    
<a href="requests.php">Friend Requests</a>    
<a href='find.php'>Find Friends</a>    
<a href='logout.php'>Logout</a>  
</div>
</header>
<div id='outerconversation'>
<div id="conversationheader">
<a href='conversation.php' title='back'>
<img src='back.png' height='20px' width='18px' />
</a>
</div>
<div id="innerconversations">
<?php
$message_query = mysql_query("SELECT from_id, message FROM `messages` WHERE `group_hash`='$hash'");
while($run_message = mysql_fetch_array($message_query)){
$from_id = $run_message['from_id'];
$message = $run_message['message'];
$user_query = mysql_query("SELECT `email`,`username` FROM `users` WHERE id='$from_id'");
$run_user = mysql_fetch_array($user_query);
$from_email = $run_user['email'];
$from_username = $run_user['username'];
echo "<hr color='#008298' /><span style='color: #008298; font- family: Arial; margin-left: 10px;'>$from_username <span style='color: #BAB9B9; font-style: italic;'>$from_email</span></span><br/><br/>";
echo "<span style='color: #008298; font-family: Segoe UI Light; margin-left: 30px;'><span style='color: #BAB9B9; font-family: Arial; margin- left: 10px;'>says: </span>$message</span><br/><br/>";
}
?>
</div>
<form method='POST'>
<textarea name='message' placeholder="Type Message..." maxlength="400" rows='6' cols='145'></textarea>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript">
var shiftDown = false;
var chatForm = $("#chat_form");
var messageBox = chatForm.children("textarea");
$(document).keypress(function (e) {
if(e.keyCode == 13) {
if(messageBox.is(":focus") && !shiftDown) {
e.preventDefault(); // prevent another \n from being entered
chatForm.submit();
}
}
});
$(document).keydown(function (e) {
if(e.keyCode == 16) shiftDown = true;
});
$(document).keyup(function (e) {
if(e.keyCode == 16) shiftDown = false;
});
</script>
</div>