• 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元素。

  • 相关阅读:
    启动一个线程是用run()还是start()? .
    多线程有几种实现方法?同步有几种实现方法?
    同步和异步有何异同,在什么情况下分别使用他们?举例说明。
    abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
    写clone()方法时,通常都有一行代码,是什么?
    解释Spring支持的几种bean的作用域。
    Spring结构?
    说说hibernate的三种状态之间如何转换?
    测试用例设计的原则是什么?目前主要的测试用例设计方法有哪些?
    一套完整的测试应该由哪些阶段组成?
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/5116192.html
Copyright © 2020-2023  润新知