`

自学MVC(九):jquery里实现ajax无刷新发表评论,和异步获取评论,带loading-2009年05月22日

    博客分类:
  • MVC
阅读更多

这是我从学mvc以来做得最艰苦的功能.

             一开始我为了解决无刷新提交数据,用了jquery的form插件.好不容易做好了.
           当我写延迟加载评论的特效时,和无刷新提交发生了冲突: 当我点击表单里的文本框时候就触发了loading动画,也就是ajaxStart事件被触发了
           我查了几天的资料,花了近一周的时间,才发现端倪.
           我的validate插件是会触发ajaxStart事件的.

           所以我
放弃了
             jQuery().ajaxStart(function() {
             }).ajaxStop(function() {})

           这样的写法.
            自己去写ajax的post方法,把数据传递到一个页面(.aspx)或者一般程序文件(.ashx) 去处理.
            没有再用MVC里的Action 去处理数据,因为我发现 Action对评论是否成功的状态也就是发表评论后的返回消息不能很好处理.
           最后的解决方案如下:

           Html页面:
            <form id="commentForm" name="commentForm" method="POST" >
             <textarea id="content" name="content" title="请输入评论"></textarea>
            <button id="bt_comment" name="bt_comment"  type="submit"  >发表评论</button>
          </form>

         js代码:
       <script language="javascript">
      $().ready(function() {
         //页面初始化时获取评论内容
         getComments(0);
     });
     //获取评论内容
     function getComments(pageindex) {
         $.post("http://www.cnblogs.com/Services/GetComments.ashx", { Mid: <%= Model.Mid  %>, PageIndex: pageindex, PageSize: 10},
  function(data, textStatus) {
         $("#videobodycommentlist").text("");
      $("#videobodycommentlist").append(data.result);

  }, "json");
     }

</script>
<script language="javascript" type="text/javascript">
         jQuery(function() {
             var loader = jQuery('<div id="loader"><img src="http://images.cnblogs.com/loading.gif" alt="loading..."  align="absmiddle"/> 评论正在发表,请等待</div>')
   .appendTo("#commentLoading")
   .hide(); //加载一个loading动画,先隐藏起来

             $("#commentForm").validate({
                 errorElement: "reg",
                 success: function(label) {
                     label.text(" ").addClass("success");
                  
                 },
                 rules:
                         {
                             content: { required: true, minlength: 11 }
                         },
                 submitHandler: function(form) {  //在页面验证事件里注册一个提交事件,这个事件在表单数据验证通过才会触发
                 addComment(); //ajax提交数据
                 $("#commentForm").resetForm();//清空表单数据
             }

         });
     });

         function addComment() {
                     $("#bt_comment").attr("disabled", "disabled"); //把提交按钮禁用,防止用户反复提交
                     $("#loader").show();          //loading动画开始
                     $("#postcommentform").hide();
                     var datas = $("#commentForm").formToArray();        //用了jquery.form.js 插件里面的一个方法,把表单数据拼接起来
                     $.ajax({
                         type: "POST",
                         url: "http://www.cnblogs.com/Services/AddComment.ashx",
                         data: datas,
                         dataType: "json",
                         success: function(msg) {
                          
                             alert(msg.result);  //把返回消息弹出
                             $("#bt_comment").removeAttr("disabled");
                             $("#loader").hide();
                             $("#postcommentform").show();
                             getComments(0);  //重新获取评论数据.

                         }
                     });
            
         }
  </script>

<!--v:3.2-->

   本文版权属于www.51kancctv.com,williams所有,首发http://www.cnblogs.com/,转载请注明出处。
分享到:
评论

相关推荐

    AJAX JQUERY自学文档

    AJAX(Asynchronous JavaScript and XML)和jQuery是Web开发中的两个关键概念,它们极大地提升了网页的交互性和用户体验。AJAX允许在不刷新整个页面的情况下,通过后台与服务器交换数据并局部更新页面,而jQuery则是...

    Ajax完全自学手册

    2. **JavaScript**:Ajax的实现离不开JavaScript,主要用于创建XMLHttpRequest对象,发送和接收数据。 3. **XMLHttpRequest对象**:Ajax的核心,它是浏览器提供的一个API,用于在后台与服务器通信。 4. **数据格式**...

    Ajax自学手册(PPT)

    18. **异步文件上传**:利用Ajax实现文件的无刷新上传。 19. **响应式设计与Ajax**:在响应式设计中有效地使用Ajax。 20. **Ajax最佳实践**:总结Ajax开发中的最佳实践和常见陷阱。 21. **实战项目**:通过实际...

    Ajax完全自学手册教程

    1. **异步通信**:Ajax的最大特点就是异步,即在用户界面不被阻塞的情况下,向服务器发送请求并接收数据。 2. **JavaScript**:Ajax的主要驱动力,通过JavaScript编写代码来创建和控制XMLHttpRequest对象。 3. **...

    Ajax完全自学手册(PPT)

    **Ajax完全自学手册(PPT)** Ajax,全称Asynchronous JavaScript and XML,是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使得网页实现异步更新,提高了用户...

    jQuery基础自学笔记(pink老师jQuery全内容)

    《jQuery基础自学笔记》 jQuery 是一款非常流行的 JavaScript 库,由 John Resig 在2006年创建,它的出现极大地简化了JavaScript的DOM操作、事件处理、动画设计以及Ajax交互。jQuery 的设计理念是“Write Less, Do ...

    【PHP+Ajax完全自学手册-3随书 PHP编程技术文档】

    PHP是一种广泛使用的服务器端脚本语言,尤其适用于网页开发,而Ajax(Asynchronous JavaScript and XML)则是一种创建动态网页的技术,能够实现页面无刷新更新,提升用户体验。这份文档集合了这两者的精髓,旨在打造...

    PHP+Ajax完全自学手册_源代码

    3. **用户交互增强**:比如,无刷新的评论系统,用户发表评论后立即显示,提升用户体验。 4. **实时通信**:结合WebSocket等技术,实现双向通信,如聊天室、股票实时更新。 【学习资源与实践】 1. **PHP基础教程**...

    DW CS6中文版零基础自学视频教程第16章 jquery框架 16节.zip

    在本教程中,我们将深入探讨Dreamweaver CS6与jQuery框架的结合使用,这是一套专为初学者设计的零基础自学视频课程。jQuery是一个强大的JavaScript库,它简化了HTML文档遍历、事件处理、动画制作和Ajax交互。在...

    js&jquery;学习笔记

    6. **Ajax请求**:jQuery的`.ajax()`和衍生方法如`.get()`, `.post()`,简化了异步数据请求,便于实现动态加载和更新页面内容。 学习笔记可能涵盖以下主题: 1. **基础概念**:解释JavaScript和jQuery的基本原理和...

    Ajax完全自学手册.rar

    **Ajax完全自学手册** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使得网页实现异步更新,提高了用户体验,尤其...

    jquery入门自学教程

    ### jQuery入门自学教程知识点概述 #### 一、jQuery简介及特点 **定义**: jQuery是一款流行的JavaScript库,旨在简化HTML文档遍历、事件处理、动画以及Ajax交互等常见操作。 **特点**: 1. **功能强大**:提供了一...

    JQuery 的自学教材,包会

    本自学教材旨在帮助初学者快速掌握jQuery 的核心概念与实用技巧,从而提升网页开发效率。** **一、jQuery 基础** 在开始学习jQuery 之前,了解JavaScript 的基础是必要的。JavaScript 是一种客户端脚本语言,用于...

    用Jquery实现的眼镜试戴系统

    4. **Ajax**:如果系统需要从服务器动态获取眼镜图片或数据,Ajax可以实现异步加载,避免页面刷新,提高响应速度。 5. **响应式设计(Responsive Design)**:确保系统在不同设备和屏幕尺寸上都能良好显示,可能...

    MVC3.0自学教材【非常详细】适合初学者

    - **AJAX支持**:MVC3.0提供了内置的jQuery AJAX支持,可以方便地创建异步操作,提升用户体验。 在"mvc简单实例"这个压缩包中,可能包含了基本的MVC3.0应用程序实例,包括控制器、视图和模型的代码示例,以及可能的...

    ajax自学手册

    1. **异步通信**:Ajax的核心是异步数据交换,这意味着用户可以继续浏览网页,而后台则在处理请求和响应。 2. **XMLHttpRequest对象**:Ajax的核心组件,用于在后台与服务器进行通信。它提供了一组方法(如open、...

    JQuery快速自学教程

    标题《JQuery快速自学教程》意味着本文将介绍如何快速上手JQuery,一门流行的JavaScript库,它简化了HTML文档遍历、事件处理、动画和Ajax交互等操作。本文适合初学者,即使没有编程基础,也能通过本文掌握基本的网页...

    【PHP+Ajax完全自学手册】【随书-4 PPT教案】

    4. Ajax应用实例:如实现分页加载、实时搜索、表单无刷新提交等功能,提升网页的用户体验。 5. Ajax的优缺点:理解Ajax如何改进用户体验,但也要注意其可能引发的问题,如浏览器兼容性、SEO挑战等。 通过《PHP+Ajax...

Global site tag (gtag.js) - Google Analytics