Ajax制作无刷新评论系统

index.html

 <script src="jquery.min.js"></script>
  <script>
    $(function(){  
    $.ajax({                //页面载入时载入评论信息
        type:"GET",
        url:"10-17.php?act=load&id="+Math.random(),
        error:function(){$("#comments").html("获取评论信息失败");},
        success:function(data){
            $("#comments").html(data);        }
   });
  $("#Submit").click(function(){   
        title=$("#title").val(); author=$("#author").val(); //获取表单中的数据
        email=$("#email").val(); content=$("#content").val(); 
        
     $.post("10-17.php",{    //发送表单中的数据给addnew.asp
     title:escape(title), author:escape(author),
     email:escape(email), content:escape(content),
     act:"add"
   },
   function(data){  
   alert(data);
if(data==1){ $("#title").val(''); $("#author").val(''); //清空添加记录框中的内容 $("#email").val(''); $("#content").val(''); var newcom="<div style='border:1px solid #CCC;margin:5px;'>网友:"+author+" 发表于"+Date()+"<br/>标题:"+title+"<br/>"+content+" Email:"+email+"</div>"; $("#comments").prepend(newcom); //插入到元素内部的最前面 }
} ); } ); } );
</script> </head> <body> <h3 style="margin:4px; text-align:center">网友评论</h3> <div id="comments"><!--用来载入评论的内容,未加载完时显示加载中图标--> <div style="border:1px solid #CCC;margin:5px 5px;"><img src="onLoad.gif" alt="加载中..." /> 评论加载中......</div> </div> <form style="margin:8px;"> <table width="350" border="0" align="center" cellpadding="2" cellspacing="1" bgcolor="#333333"> <caption>请在下面发表你的高见吧</caption> <tbody bgcolor="#ffffff"> <tr> <td>昵称:</td> <td><input type="text" id="author"></td> </tr> <tr> <td>邮箱:</td> <td><input type="text" id="email"></td> </tr> <tr> <td width="100">标题:</td> <td width="325"><input type="text" id="title"></td> </tr> <tr> <td>内容:</td> <td><textarea id="content" cols="30" rows="2"></textarea></td> </tr> <tr> <td></td> <td><input type="button" id="Submit" value="发表评论"></td> </tr> </tbody> </table> </form>

10-17.php

<?
header("Content-type: text/html; charset=gb2312"); 

require('conn.php');
$act=$_REQUEST["act"]; //获取act变量的值
//$act="load";
if($act=="load") {        //如果是请求载入评论
    $result=$conn->query("select * from lyb order by ID desc limit 3");

    if($result->num_rows>0) {
        while($row=$result->fetch_assoc()){
            ?>
            <div style="border:1px solid #CCC;margin:5px;">
                网友:<?= $row["author"] ?> 发表于<?= $row["date"] ?><br/>
                标题:<?= $row["title"] ?><br/>
                <?= $row["content"] ?> Email:<?= $row["email"] ?>
            </div>
            <? }
        } 
            else    echo "<p>目前还没有用户留言</p>";
        }
if($act=="add") {      
//'如果是发表评论
   $title = unescape($_POST["title"]);    //获取10-16.php传来的数据
   $author = unescape($_POST["author"]);
   $email = unescape($_POST["email"]);
   $content = unescape($_POST["content"]);    
   $date=date("Y-m-d h:i:s");
   $sql="Insert into lyb(title,author,email,content,date) values('$title','$author','$email', '$content','$date')";    

   if($conn->query($sql)) echo 1;
} ?>

(1)该评论系统中的新闻是在页面载入之后采用Ajax技术载入进来的,因此HTML代码中可以没有任何用来读取数据表lyb中的评论数据的php代码。

(2)载入评论的容器元素#comments中本来就含有一个“正在加载”的图像和文字,当载入完成之后,这些内容会被评论信息替换掉。达到不用$.ajax()方法的beforeSend()函数也能实现显示“正在加载”图标的效果。

(3)该评论系统也采用了在服务器端和客户端分别插入记录的方法,服务器端插入记录成功后,发送标志1给客户端,客户端采用prepend()方法动态插入div元素。

原文地址:https://www.cnblogs.com/xs-yqz/p/5116192.html