这是我从学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-->
分享到:
相关推荐
AJAX(Asynchronous JavaScript and XML)和jQuery是Web开发中的两个关键概念,它们极大地提升了网页的交互性和用户体验。AJAX允许在不刷新整个页面的情况下,通过后台与服务器交换数据并局部更新页面,而jQuery则是...
2. **JavaScript**:Ajax的实现离不开JavaScript,主要用于创建XMLHttpRequest对象,发送和接收数据。 3. **XMLHttpRequest对象**:Ajax的核心,它是浏览器提供的一个API,用于在后台与服务器通信。 4. **数据格式**...
18. **异步文件上传**:利用Ajax实现文件的无刷新上传。 19. **响应式设计与Ajax**:在响应式设计中有效地使用Ajax。 20. **Ajax最佳实践**:总结Ajax开发中的最佳实践和常见陷阱。 21. **实战项目**:通过实际...
1. **异步通信**:Ajax的最大特点就是异步,即在用户界面不被阻塞的情况下,向服务器发送请求并接收数据。 2. **JavaScript**:Ajax的主要驱动力,通过JavaScript编写代码来创建和控制XMLHttpRequest对象。 3. **...
**Ajax完全自学手册(PPT)** Ajax,全称Asynchronous JavaScript and XML,是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使得网页实现异步更新,提高了用户...
《jQuery基础自学笔记》 jQuery 是一款非常流行的 JavaScript 库,由 John Resig 在2006年创建,它的出现极大地简化了JavaScript的DOM操作、事件处理、动画设计以及Ajax交互。jQuery 的设计理念是“Write Less, Do ...
PHP是一种广泛使用的服务器端脚本语言,尤其适用于网页开发,而Ajax(Asynchronous JavaScript and XML)则是一种创建动态网页的技术,能够实现页面无刷新更新,提升用户体验。这份文档集合了这两者的精髓,旨在打造...
3. **用户交互增强**:比如,无刷新的评论系统,用户发表评论后立即显示,提升用户体验。 4. **实时通信**:结合WebSocket等技术,实现双向通信,如聊天室、股票实时更新。 【学习资源与实践】 1. **PHP基础教程**...
在本教程中,我们将深入探讨Dreamweaver CS6与jQuery框架的结合使用,这是一套专为初学者设计的零基础自学视频课程。jQuery是一个强大的JavaScript库,它简化了HTML文档遍历、事件处理、动画制作和Ajax交互。在...
6. **Ajax请求**:jQuery的`.ajax()`和衍生方法如`.get()`, `.post()`,简化了异步数据请求,便于实现动态加载和更新页面内容。 学习笔记可能涵盖以下主题: 1. **基础概念**:解释JavaScript和jQuery的基本原理和...
**Ajax完全自学手册** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使得网页实现异步更新,提高了用户体验,尤其...
### jQuery入门自学教程知识点概述 #### 一、jQuery简介及特点 **定义**: jQuery是一款流行的JavaScript库,旨在简化HTML文档遍历、事件处理、动画以及Ajax交互等常见操作。 **特点**: 1. **功能强大**:提供了一...
本自学教材旨在帮助初学者快速掌握jQuery 的核心概念与实用技巧,从而提升网页开发效率。** **一、jQuery 基础** 在开始学习jQuery 之前,了解JavaScript 的基础是必要的。JavaScript 是一种客户端脚本语言,用于...
4. **Ajax**:如果系统需要从服务器动态获取眼镜图片或数据,Ajax可以实现异步加载,避免页面刷新,提高响应速度。 5. **响应式设计(Responsive Design)**:确保系统在不同设备和屏幕尺寸上都能良好显示,可能...
- **AJAX支持**:MVC3.0提供了内置的jQuery AJAX支持,可以方便地创建异步操作,提升用户体验。 在"mvc简单实例"这个压缩包中,可能包含了基本的MVC3.0应用程序实例,包括控制器、视图和模型的代码示例,以及可能的...
1. **异步通信**:Ajax的核心是异步数据交换,这意味着用户可以继续浏览网页,而后台则在处理请求和响应。 2. **XMLHttpRequest对象**:Ajax的核心组件,用于在后台与服务器进行通信。它提供了一组方法(如open、...
标题《JQuery快速自学教程》意味着本文将介绍如何快速上手JQuery,一门流行的JavaScript库,它简化了HTML文档遍历、事件处理、动画和Ajax交互等操作。本文适合初学者,即使没有编程基础,也能通过本文掌握基本的网页...
4. Ajax应用实例:如实现分页加载、实时搜索、表单无刷新提交等功能,提升网页的用户体验。 5. Ajax的优缺点:理解Ajax如何改进用户体验,但也要注意其可能引发的问题,如浏览器兼容性、SEO挑战等。 通过《PHP+Ajax...