Javascript 我希望在对话div中显示最后提交的消息,而不刷新和重新加载页面,如whatsapp、facebook messenger和skype

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。我能做什么请解决这个问题。我被困

我正在开发聊天系统,但我有一个问题,当我向另一个用户发送消息时,他在刷新页面之前无法看到消息。我想要像facebook messenger,whatsapp,skype可以直接向接收者显示消息,而无需刷新或在页面中重新加载。我对如何处理它感到非常困惑。我还从该网站添加了现成的刷新和更新功能StackOverflow并添加到我的网站源代码中,但我收到一个错误,未定义的索引:hash in第9行的C:\Xamp\htdocs\myfiles\startcon.php。我能做什么请解决这个问题。我被困住了,不知道该怎么办

您需要使用ajax请求来完成此操作。 大约一年前我也做过同样的事情,我有代码。
我写得不多。我会把它上传到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>&nbsp &nbsp 
         <a href="conversation.php">Messenger</a> &nbsp &nbsp 
         <a href="friends.php">Friends</a> &nbsp &nbsp  
         <a href="requests.php">Friend Requests</a> &nbsp &nbsp 
         <a href='find.php'>Find Friends</a> &nbsp &nbsp 
         <a href='logout.php'>Logout</a> &nbsp 
     </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>