ASP.NET MVC后台和前台页面ajax双向传递Json数据

  • Post author:
  • Post category:其他

前台获取后台json数据

前台通过 GET 方法ajax的方式获取后台数据

json以对象方式传递

后台可以直接返回json对象,注意这个arrayList如果过大,会出错,因为JsonResult之有MaxJsonLength属性,这个大家可以研究,数据量大才会出现。
1.后台写法

public JsonResult ActionName()
{ 
 	//arrayList传递给前台的对象
 	//前台可以直接接收到就是json对象,无需反序列 
 	//返回一个json对象
 	return Json(arrayList, JsonRequestBehavior.AllowGet);
}

2.前台写法

$.ajax({
	url: '/Json/ActionName',//获取数据的路径
	type: 'Get',
	dataType: 'json',//期待返回的数据类型json
	success : function(data) {
				//data数据就是后台传来的arrayList
				//直接就是json对象,可以直接使用,无需再处理。
                }
	})

string以字符串的方式传递

后台返回string类型
1.后台写法

public string ActionName()
{
	//前台接收就是字符串,需要反序列,例如:
	//var obj = JSON.parse(str); //由JSON字符串转换为JSON对象
	//返回一个json字符串
  	string json = JsonConvert.SerializeObject(list);
  	return json;
}

2.前台写法

$.ajax({
	url: '/Json/ActionName',//获取数据的路径
	type: 'Get',
	dataType: 'text',//期待返回的数据类型text
	success : function(data) {
				//data数据就是后台传来的json
				//需处理过才能获取到json对象。
				var jsondata= JSON.parse(data); //由JSON字符串转换为JSON对象
                }
	})

后台获取前台json数据

前台通过 POST 方法ajax的方式将数据传递给后台

json以对象方式传递

1.前台写法

$.ajax({
	url: '/Json/Post',//post数据的路径
	type: 'Post',
	data: JsonData,//传递给后台的数据,是json对象
	})

2.后台写法

//jsonclass:自定义的类型和前台一致即可
public JsonResult Post(jsonclass data)
{ 
	//data就是前台传递的JsonData,可以直接得到对象,无需在做处理
}

string以字符串的方式传递

1.前台写法

$.ajax({
	url: '/Json/Post',//post数据的路径
	type: 'Post',
	data:{ 'mydata':JSON.stringify(data)},//传递给后台的数据
	})

2.后台写法

//jsonclass:自定义的类型和前台一致即可
public JsonResult Post()
{ 
	//data就是前台传递的JsonData,可以直接得到对象,无需在做处理
	var data = GetKeyValue("mydata");
	JavaScriptSerializer js = new JavaScriptSerializer();
	//jsondata后台需要使用的数据
   jsonclass jsondata = js.Deserialize<jsonclass>(data);
}

总结记录

  1. JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式,它是一串字符串,只不过元素会使用特定的符号标注。
  2. 本质就是前后台数据交互的一种数据格式
  3. Ajax即Asynchronous Javascript And XML(异步JavaScript和XML)
  4. json数据传递关键在于前后台一致,对象传递,就无需反序列化;字符串传递的,前后台拿到数据都需要先反序列化,得到对象,在进行使用。

版权声明:本文为CSDN_Doris原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。