【1】
AJAX技术概述
客户端
HTML DOM
CSS
JavaScript
XMLHttpRequest
jQuery
服务器端
ASP.NET
JSP
PHP
其他
他们是以Http协议,使用下面的数据格式进行交互
数据格式: 文本 XML JSON HTML
【2】
asp.net mvc中处理ajax请求的流程
动作方法(action)-负责处理Ajax 请求
职责1-接收请求的数据,与非ajax的请求是一致的
职责2-返回客户端需要的数据 文本 JSON HTML 其他
【3】
例子,通过action返回一个文本
[HttpPost]
public ActionResult DeleteGroup(int? id)
{
if (id.HasValue)
{
//省略代码
context.PrivateGroups.Remove(removedItem);
if (context.SaveChanges() > 0)//假如执行成功,操作数量大于0
{
return Content( "1" );//成功返回1
}
}
return Content( "0" );//失败返回0
}
例子,返回Html
public ActionResult ListGroups() {
User user = Session["CurrentUser"] as User;
if(user == null) {
return this.Content("<script>window.location='" + Url.Action("Login", "Account") + "'</script>");
}
return PartialView("GroupList"); }
例子,返回Json
public ActionResult ListGroupsToJson() {
//分组列表数据
var groups = (from g in context.PrivateGroups
where g.OwnerId == userId
select g ).ToList(); //通过linq表达式查询
return Json(groups,JsonRequestBehavior.AllowGet); //返回一个json
}
Json使用问题
1,Get 方式请求JSON 数据错误
原因:遗漏JsonRequestBehavior.AllowGet参数
return Json(groups,JsonRequestBehavior.AllowGet);
2.Json()序列化实体对象错误
原因:直接序列化EF 对象,而且属性循环依赖
context.Configuration.ProxyCreationEnabled = false;
【比较】
纯文本 适合保存单个数据,数据传输量小,客户端处理较多 保存数据处理结果,比如0或1的标识等
结构化数据(JSON等) 适合保存一行或多行数据,数据传输量较小,客户端处理较多
展示列表数据,客户端使用jQuery网格或树等插件来展示数据
HTML(分部视图等) 任意数据,数据传输量大,客户端处理较少
显示一定结构的任意内容,列表数据、表单等
【4】
小技巧
$.ajaxSetup({ cache: false })//用于清除客户端缓存