asp.net-mvc中的ajax

【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 })//用于清除客户端缓存

 

你可能感兴趣的:(asp.net)