【问题标题】:PHP/AJAX: Ajax request to php not working, not putting rows into divPHP/AJAX:对 php 的 Ajax 请求不起作用,未将行放入 div
【发布时间】:2014-06-05 05:55:34
【问题描述】:

我正在进行 php 聊天,但在使用 ajax 检查 mysql 数据库并将数据放入 div 时遇到了一些问题。这是我的代码:

HTML

<div id="chatbox">
    <div class="chatheader"><div class="chatheadertext">chatheader</div></div>
    <div id="chatcontainer">
        <div class="chatpadding">
            <div id="chatmessages">
                <div class="chat-replies">
                <div class="chat-reply-container">
                    <div class="chat-reply-avatar">
                        <img src="img/default_avatar.png">
                    </div>
                    <div class="chat-reply-chat">
                        <span class="chat-reply-author">testuser</span><br>
                        <span class="chat-reply-content">test message goes here</span>
                    </div>
                </div>
                </div>
            </div>
        </div>
        <form id="form" action="">
          <textarea class="chatchat" id="message" placeholder="Type message here!"></textarea>
        </form>
    </div>
</div>

JAVASCRIPT

<script>
$(".chatheader").on("click", function () {
    $("#chatcontainer").slideToggle();
});
$("textarea").keyup(function(e){
 if((e.keyCode ? e.keyCode : e.which) == 13) { 
   //The enter button has been pressed
 }
});
$(function () 
  {
    $.ajax({                                      
      url: 'ajax.php',                 
      data: "",                   
      dataType: 'json',             
      success: function(data)        
      {
        $('#chatmessages').html("<div class='chat-replies'>
                <div class='chat-reply-container'>
                    <div class='chat-reply-avatar'>
                        <img src='img/default_avatar.png'>
                    </div>
                    <div class='chat-reply-chat'>
                        <span class='chat-reply-author'>testuser</span><br>
                        <span class='chat-reply-content'>test message goes here</span>
                    </div>
                </div>
                </div>");
      } 
    });
  }); 
</script>

PHP

<?php
$con = mysqli_connect('localhost','root','','chat');
$query = mysqli_query($con,"SELECT * FROM `messages`");
$msgnum = mysqli_num_rows($query);
$array = mysqli_fetch_row($query);
  echo json_encode($array);
?>

所以基本上我要做的是使用 ajax 来联系 php 文件,然后该文件将检查 mysql 数据库中的表并将它们编码为 json,在索引页面上,聊天框应该由第一个 javascript功能,但它没有向上滑动。知道这是 ajax 正在执行此操作,特别是 $('#chatmessages').html(); 行。当我从该行中删除代码时,聊天框会出现,但里面是空的。我做错了什么,我该怎么做,以便当它联系时,对于在数据库中找到的每一行,它都会回显

<div class='chat-replies'>
                <div class='chat-reply-container'>
                    <div class='chat-reply-avatar'>
                        <img src='img/default_avatar.png'>
                    </div>
                    <div class='chat-reply-chat'>
                        <span class='chat-reply-author'>testuser</span><br>
                        <span class='chat-reply-content'>test message goes here</span>
                    </div>
                </div>
                </div>

因此,如果数据库中有 50 行,它将为每一行回显该脚本,并且&lt;div id="chatmessages"&gt; 上会有一个overflow-y:scroll,因此它不会溢出。提前感谢任何可以提供帮助的人!

【问题讨论】:

  • 什么时候调用ajax?在哪个活动上?

标签: javascript php jquery mysql ajax


【解决方案1】:

如果您的 AJAX 调用成功回调中有 json 数据,您可以遍历所有记录并将每条记录附加到您的聊天 div

 success: function(data)        
          {
           $.each(data,function(index,dataRecord){
           document.getElementById('chatmessages').innerHTML +="html content goes here";
           });
           //scroll down your div,make sure you should have propery, overflow-y:scroll
          document.getElementById('chatmessages').scrollTop=100000;
         }

希望这会有所帮助, 谢谢

【讨论】:

  • 当我将html代码添加到脚本时,聊天框不会切换,用这个脚本尝试过,但聊天根本打不开。
  • 在成功回调中显示您的聊天 div 作为第一条语句。 $("#chatmessages").show()
猜你喜欢
  • 1970-01-01
  • 2013-11-13
  • 2018-07-04
  • 1970-01-01
  • 2013-08-14
  • 1970-01-01
  • 2012-05-29
  • 2015-04-23
  • 1970-01-01
相关资源
最近更新 更多