【JAVASCRIPT】jquery实现ajax无刷新评论

jquery实现ajax无刷新评论需要用的技术:(本次试验用的是“jquery-1.4.2.js”版本的jquery)

  • $.post("一般处理程序路径",{以字典的形式传递参数},function(data,status){``````});
  • jquery中的基本选择器操作;

首先创建数据库“T_article”:

主键设置自增;

然后创建一个强类型的DataSet,关于怎么创建强类型的DataSetnet小伙在【C#】强类型DataSet实现登录次数限制中已经写过;

接着创建一个“无刷新评论.aspx”页面:

页面代码如下:

前台布局代码
 1     <div>
 2         <h2>文章:</h2>
 3         <p>this a text!this a text!this a text!this a text!this a text!this a text!this a text!this a text!
 4         this a text!this a text!this a text!this a text!this a text!this a text!this a text!this a text!this a text!
 5         this a text!this a text!this a text!this a text!this a text!this a text!</p>
 6         <ul id="pinglunlist">
 7         </ul>
 8     </div>
 9     <textarea id="msg" style="margin-left:20px;" cols="40" rows="10"></textarea>
10     <input id="btnpinglun" type="button"
11         value="评论" />

然后创建两个一般处理程序WSXPL.ashx(用来插入数据的处理程序)和WSXPL1.ashx(用来获取所有评论数据的处理程序);

WSXPL.ashx中的代码如下:

执行插入数据处理程序
1         public void ProcessRequest(HttpContext context)
2         {
3             context.Response.ContentType = "text/plain";
4             string msg = context.Request["msg"];
5             new T_articleTableAdapter().Insert(context.Request.UserHostAddress, msg, DateTime.Now); //创建一个强类型的实例,然后调用Insert()函数插入;
6             context.Response.Write("ok");
7         }

WSXPL1.ashx中的代码如下:

获取所有的评论数据
 1         public void ProcessRequest(HttpContext context)
 2         {
 3             context.Response.ContentType = "text/plain";
 4             var datas = new T_articleTableAdapter().GetData();  //返回的是一个DataTable
 5             StringBuilder sb = new StringBuilder(); //创建StringBuilder更加方便的搜集数据
 6             foreach (var data in datas)     //用foreach方法遍历DataTable
 7             {//实现字符串的拼接;每行数据用$隔开,每行数据的每个元素用|隔开;有利于前台解析数据;
 8                 sb.Append(data.ipaddress).Append("|").Append(data.msg).Append("|").Append(data.posttime).Append("$");
 9             }
10             context.Response.Write(sb);
11         }

做完这些步骤,操作数据库的部分就已经完成了。现在只要在前台把一般处理程序返回的数据解析一下并附加的相应的位置就可以了!

首先在前台引用“jquery-1.4.2.js”jquery库;然后开始编写js脚本;

 1         $(function () {
 2             $.post("WSXPL1.ashx", function (data, status) { //通过WSXPL1.ashx获取所有的评论内容
 3                 if (status == "success") {
 4                     var result = data.split("$");   //按照$分割字符串
 5                     for (var i = 0; i < result.length - 1; i++) {
 6                         var msg = result[i];
 7                         var line = msg.split("|");      //按照|分割字符串
 8                         var pinglun = $("<li>用户ID:" + line[0] + "; 评论内容:" + line[1] + "; 评论时间:" + line[2] + "</li>");
 9                         $("#pinglunlist").append(pinglun);  //把得到的评论结果追加到ul元素上
10                     }
11                 }
12                 else {
13                     alert("ajax错误!");
14                 }
15             })
16 
17             $("#btnpinglun").click(function () {    //设置btn事件
18                 var msg = $("#msg").val();
19                 $.post("ashx/WSXPL.ashx", { "msg": msg }, function (data, status) {
20                     if (status == "success") {
21                         if (data == "ok") {
22                             $.post("WSXPL1.ashx", function (data, status) { //为了实现评论的时候评论内容会自动的添加到ul上
23                                 if (status == "success") {
24                                     var result = data.split("$");
25                                     var msg = result[result.length - 2];        //获取最后一条评论
26                                     var line = msg.split("|");
27                                     var pinglun = $("<li>用户ID:" + line[0] + "; 评论内容:" + line[1] + "; 评论时间:" + line[2] + "</li>");
28                                     $("#pinglunlist").append(pinglun);      //把最后一条评论追加到ul上
29                                 }
30                                 else {
31                                     alert("ajax错误!");
32                                 }
33                             })
34                             alert("评论成功!");
35                         }
36                         else {
37                             alert("评论失败!");
38                         }
39                     }
40                 })
41 
42             })
43         })

做完这些直接运行就可以了!

posted @ 2012-08-17 16:44  net小伙  阅读(1864)  评论(0编辑  收藏  举报