Json在前台与后台之间的使用
一、将前台数据,使用ajax中的post、get传到后台
1、生成JSON字符串
1.1在前台页面生成JSON
<label>无锡</label><input type="checkbox" name="city" value="无锡" />
<label>苏州</label><input type="checkbox" name="city" value="苏州" />
<label>江苏省</label><input type="checkbox" name="province" value="江苏省" />
<input type="button" name="btn" value="点击查看" id='btn_query'/>
HTML代码
$("#btn_query").click(function () {
var citys=[];
$("input[name='city']:checked").each(function () {
var options={};
if(this.value!=""){
options.city=this.value;
citys.push(options);
}
});
});
JS代码声明数组,将数组当成JSON对象
<input name="name" type="text" id="name" value="" />
<input type="text" name="name" value="" id="email" />
<input type="text" name="name" value="" id="tel" />
<input type="text" name="name" value="" id="memo" />
HTML代码
var data = new Object;
data.name = document.getElementById('name').value;
data.email = document.getElementById('email').value;
data.tel = document.getElementById('tel').value;
data.memo = document.getElementById('memo').value;
var str = JSON.stringify(data);
JS声明对象,再讲对象转换成JSON
$.ajax({
type: 'post',
url: 'your url',
data: JSON.stringify(citys),//这里的citys 第一段JS代码中的city(JS数组)
success: function(data) {
如果是form提交,可以使用$("form").serialize()来讲表单内的内容,转换成String。
//serialize方法,是jQuery中序列化方法。
} });
//ajax的简便使用
$.post("url",{id:123},function(data){
alert(data)
});
{id:123} 就是一个json
$.get("url","age=23&name=vichin",function(data){
alert(data)
});
$.getJSON();要求后台必须返回一个json对象
通过Ajax,将JSON数据传递到后台
二、在后台中取得前台传来的数据
$.ajax({
type: "post",
url: "Handler1.ashx?action=citys",
data:JSON.stringify(a),//这里的a一定要是一个json对象,而不是能json格式的字符串
success: function (result) {
alert(result);
}
});
//后台取值
//先生成一个person类。该类的结构,要与前台的json结构一致!
public class getJson
{
public string city { get; set; }
}
//使用NewtonSoft.dll
var stream = context.Request.InputStream;//获取传递过来的JSON对象
string json = new StreamReader(stream).ReadToEnd();//获取传递过来的JSON对象
getJson city = JsonConvert.DeserializeObject<getJson>(json);
//使用.net内置对象
public void citys(HttpContext context) {
var stream = context.Request.InputStream;
string json = new StreamReader(stream).ReadToEnd();
System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
List<getJson> cityList = js.Deserialize<List<getJson>>(json);
context.Response.Write("转换成功!");
}
C#里处理前台传来的JSON
将DataTable转换成Json对象
1、使用Json.net转换
string sqlstr="select * from table";
DataTable DT =SqlHelper.Query(sqlstr);
if (DT.Rows.Count != )
{
context.Response.Write(JsonConvert.SerializeObject(DT, new DataTableConverter()));
}
将DataTable转换成Json对象
2、使用C#代码转换(该方法主要是用于Jquery Easy UI中)
/// <summary>
/// dataTable转换成Json格式
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string DataTable2Json(DataTable dt)
{
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.Append("[");
for (int i = ; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = ; j < dt.Columns.Count; j++)
{
jsonBuilder.Append("\"");
jsonBuilder.Append(dt.Columns[j].ColumnName);
jsonBuilder.Append("\":\"");
jsonBuilder.Append(dt.Rows[i][j].ToString());
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - , );
jsonBuilder.Append("},");
}
if (dt.Rows.Count > )
{
jsonBuilder.Remove(jsonBuilder.Length - , );
}
jsonBuilder.Append("]");
return jsonBuilder.ToString();
}
DataTable2Json with C# code
3、在后台将数据序列化成JSON字符串
//实体:
public class outData
{
public List<string> NewList { get; set; }
public string user { get; set; }
} string WannaJson()
{
List<string> newList = new List<string>();
newList.Add("");
newList.Add("");
newList.Add(""); outData data1 = new outData();
data1.NewList = newList;
data1.user = "james"; JavaScriptSerializer js = new JavaScriptSerializer();
string strJson = js.Serialize(data1);
return strJson;
}
使用实体来转换
string GetJson()
{
List<string> newList = new List<string>();
newList.Add("");
newList.Add("");
newList.Add("");
var data = new { newList = newList, name = "Vichin" };
JavaScriptSerializer js = new JavaScriptSerializer();
string strJson = js.Serialize(data);
return strJson;
}
使用匿名类来序列化
四、将后台的数据,传给前台
将数据通过ajax返回给前台后,使用js的eval函数,就可以把string转换成json对象了
success: function (data) {
var man= eval(data);
//后面要执行的代码for(int i=0;i<man.length;i++){
....
}
}
注意:
JSON对象转化JSON字符串
var jsonstr =JSON.stringify(jsonObject );
JSON字符串转化JSON对象
var jsonObject= jQuery.parseJSON(jsonstr); JSON中的stringify 和 parse对象所支持的浏览器都是要在IE8以上的(IE8兼容模式也不行)。 stringify兼容性问题:
MSDN上原话:在以下文档模式中受到支持:Internet Explorer 8 标准模式、Internet Explorer 9 标准模式、Internet Explorer 10 标准模式、Internet Explorer 11 标准模式。
解决方法:
1、将页面强制设置浏览器打开页面的文档模式
<head><metahttp-equiv="X-UA-Compatible"content="IE=8">…</head>——————将浏览器打开页面时,默认文档设置为IE 8
2、在页面上引用JSON2.JS
eval对象支持ie6\7(听说好像是不太安全)!
$.parseJSON()———— 将格式完好的JSON字符串转为与之对应的JavaScript对象(jQuery3.0以后废弃(改用JSON.parse),在1.9中推荐使用)
$.param()方法————用于将JS内的数组转换成JSON对象
var obj = {
name: 'sunnie'
};
var flag = isHasAttr(obj, "name");
var val = isHasAttrVal(obj, "name", "sunnie");
//是否有对象属性
function isHasAttr(obj, attr) {
//判断是否有该键值
if (obj && obj.hasOwnProperty(attr)) {
//如果有返回true
return true;
}
return false;
}
//是否含有对象属性对应的值
function isHasAttrVal(obj, attr, value) {
//判断是否有该键值对应的值
if (obj && obj.hasOwnProperty(attr) && obj[attr] === value) {
//如果有返回true
return true;
}
return false;
}
判断JSON对象下是否包含某个值或者某个属性
JSON.net官网
使用newtonSoft.dll进行序列化与反序列化 https://www.newtonsoft.com/json/help/html/SerializeDataSet.htm
Json在前台与后台之间的使用的更多相关文章
- Jquery EasyUI +Ajax +Json +一般处理程序 实现数据的前台与后台的交互 --- 善良公社项目
经过上一篇博客,本节主要是来看实现的功能是后台的数据通过json数据传过来,前台修改的数据再传回数据库之后页面再次更新table中的数据: 图示: 实例:前台的代码 <%--表格显示区--%&g ...
- ASP.NET中使用JSON方便实现前台与后台的数据交换
ASP.NET中使用JSON方便实现前台与后台的数据交换 发表于2014/9/13 6:47:08 8652人阅读 分类: ASP.NET Jquery extjs 一.前台向后台请求数据 在页面加 ...
- Linux的bg和fg命令 ---让程序在前台后台之间切换
Linux的bg和fg命令 我们都知道,在 Windows 上面,我们要么让一个程序作为服务在后台一直运行,要么停止这个服务.而不能让程序在前台后台之间切换.而 Linux 提供了 fg 和 bg 命 ...
- 前台的js对象数组传到后台处理。在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>
前台的js对象数组传到后台处理.在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>
- spring boot 解决后台返回 json 到前台中文乱码之后出现返回json数据报错 500:no convertter for return value of type
问题描述 spring Boot 中文返回给浏览器乱码 解析成问号?? fastJson jackJson spring boot 新增配置解决后台返回 json 到前台中文乱码之后,出现返回json ...
- Struts2 前端与后台之间传值问题
老是被前端与后台之间的传值给弄糊涂了,特此写一篇blog进行总结. 一. 前端向后台传值 (1)属性驱动 属性驱动是指在Action类里,包含表单里对应的字段(字段名称一样),同时设置对应的gette ...
- Ext分页实现(前台与后台)
Ext分页实现(前台与后台)Spring+Mybatis 一.项目背景 关于Ext的分页网上有很多博客都有提到,但是作为Ext新手来说,并不能很容易的在自己的项目中得以应用.因为,大多数教程以及博客基 ...
- MVC 前台向后台传输数据
今天,我们一起来学习下.MVC如何在前台给后台传输数据 (1)前台传输数据到后台 具体思路:前台拼凑json字符串,然后通过 get 或 post 方式,传递到后台 Action 方法中 我现在前台展 ...
- 由ASP.NET所谓前台调用后台、后台调用前台想到HTTP——理论篇
工作两年多了,我会经常尝试给公司小伙伴儿们解决一些问题,几个月下来我发现初入公司的小朋友最爱问的问题就三个 1. 我想前台调用后台的XXX方法怎么弄啊? 2. 我想后台调用前台的XXX JavaScr ...
随机推荐
- Maven学习 (一) 搭建Maven环境
有两种方式可以配置maven的环境配置,本人推荐使用第二种,即使用本地的maven安装文件,个人感觉这样可以方便管理下载jar包的存放位置,错误信息的输出等,可以在dos窗口中可以清晰看到,虽然比 ...
- 在AD转换中的过采样和噪声形成
1. 直接量化的过采样AD转换 此类系统的模型可以用下图表示. 图中xa(t)是输入信号,e(t)是量化引入的噪声,xd[n]是最终得到的数字信号,包含分量xda和xde. 对于M倍过采样,信号与量化 ...
- threadid=1: thread exiting with uncaught.exception ......解决方法
threadid=1: thread exiting with uncaught exception (group=0x40015560)E/AndroidRuntime(285): FATAL E ...
- linux知识
1. linux dns配置文件为 /etc/resolv.conf nameserver 114.114.114.114 国内常用(而国外常用8.8.8.8) 2. Linux 服务器名词与p ...
- 【javascript基础】4、原型与原型链
前言 荒废了好几天,在宿舍闷了几天了,一直想着回家放松,什么也没搞,论文就让老师催吧.不过,闲的没事干的感觉真是不好,还是看看书,写写博客吧,今天和大家说说函数的原型. 原型是什么 第一次看到这个的时 ...
- Crt单元
一.调用单元例:uses crt; 二.清屏例:clrscr; 三.移动光标例:gotoxy(a,b);其中a表示列号,b表示行号 四.清行例:clreol;清除光标所在行光标上及以后的所有字符 五. ...
- onmouseover和onmouseout的那些事
这篇文章来自一个偶然...以前刚开始学习javascript事件的时候就被一个东西搞得晕头撞向的.就是一对名字很相近的事件.一组是onmouseover()和onmouseout().另一组就是onm ...
- DevExpress ChartControl大数据加载时有哪些性能优化方法
DevExpress ChartControl加载大数据量数据时的性能优化方法有哪些? 关于图表优化,可从以下几个方面解决: 1.关闭不需要的可视化的元素(如LineMarkers, Labels等) ...
- DataGridView控件的各种操作总结
一.单元格内容的操作 *****// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index ...
- 如何利用tomcat和cas实现单点登录(2):配置cas数据库验证和cas客户端配置
接(1),上一篇主要讲述了tomcat和cas server端的部署. 接下来主要还有两个步骤. 注意:为了开启两个tomcat,要把直接配置的tomcat的环境变量取消!!!!!!!!!! 客户端配 ...