一、将前台数据,使用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><meta http-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在前台与后台之间的使用的更多相关文章

  1. Jquery EasyUI +Ajax +Json +一般处理程序 实现数据的前台与后台的交互 --- 善良公社项目

    经过上一篇博客,本节主要是来看实现的功能是后台的数据通过json数据传过来,前台修改的数据再传回数据库之后页面再次更新table中的数据: 图示: 实例:前台的代码 <%--表格显示区--%&g ...

  2. ASP.NET中使用JSON方便实现前台与后台的数据交换

    ASP.NET中使用JSON方便实现前台与后台的数据交换 发表于2014/9/13 6:47:08  8652人阅读 分类: ASP.NET Jquery extjs 一.前台向后台请求数据 在页面加 ...

  3. Linux的bg和fg命令 ---让程序在前台后台之间切换

    Linux的bg和fg命令 我们都知道,在 Windows 上面,我们要么让一个程序作为服务在后台一直运行,要么停止这个服务.而不能让程序在前台后台之间切换.而 Linux 提供了 fg 和 bg 命 ...

  4. 前台的js对象数组传到后台处理。在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>

    前台的js对象数组传到后台处理.在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>

  5. spring boot 解决后台返回 json 到前台中文乱码之后出现返回json数据报错 500:no convertter for return value of type

    问题描述 spring Boot 中文返回给浏览器乱码 解析成问号?? fastJson jackJson spring boot 新增配置解决后台返回 json 到前台中文乱码之后,出现返回json ...

  6. Struts2 前端与后台之间传值问题

    老是被前端与后台之间的传值给弄糊涂了,特此写一篇blog进行总结. 一. 前端向后台传值 (1)属性驱动 属性驱动是指在Action类里,包含表单里对应的字段(字段名称一样),同时设置对应的gette ...

  7. Ext分页实现(前台与后台)

    Ext分页实现(前台与后台)Spring+Mybatis 一.项目背景 关于Ext的分页网上有很多博客都有提到,但是作为Ext新手来说,并不能很容易的在自己的项目中得以应用.因为,大多数教程以及博客基 ...

  8. MVC 前台向后台传输数据

    今天,我们一起来学习下.MVC如何在前台给后台传输数据 (1)前台传输数据到后台 具体思路:前台拼凑json字符串,然后通过 get 或 post 方式,传递到后台 Action 方法中 我现在前台展 ...

  9. 由ASP.NET所谓前台调用后台、后台调用前台想到HTTP——理论篇

    工作两年多了,我会经常尝试给公司小伙伴儿们解决一些问题,几个月下来我发现初入公司的小朋友最爱问的问题就三个 1. 我想前台调用后台的XXX方法怎么弄啊? 2. 我想后台调用前台的XXX JavaScr ...

随机推荐

  1. Maven学习 (一) 搭建Maven环境

      有两种方式可以配置maven的环境配置,本人推荐使用第二种,即使用本地的maven安装文件,个人感觉这样可以方便管理下载jar包的存放位置,错误信息的输出等,可以在dos窗口中可以清晰看到,虽然比 ...

  2. 在AD转换中的过采样和噪声形成

    1. 直接量化的过采样AD转换 此类系统的模型可以用下图表示. 图中xa(t)是输入信号,e(t)是量化引入的噪声,xd[n]是最终得到的数字信号,包含分量xda和xde. 对于M倍过采样,信号与量化 ...

  3. threadid=1: thread exiting with uncaught.exception ......解决方法

     threadid=1: thread exiting with uncaught exception (group=0x40015560)E/AndroidRuntime(285): FATAL E ...

  4. linux知识

    1. linux dns配置文件为 /etc/resolv.conf nameserver 114.114.114.114    国内常用(而国外常用8.8.8.8) 2. Linux 服务器名词与p ...

  5. 【javascript基础】4、原型与原型链

    前言 荒废了好几天,在宿舍闷了几天了,一直想着回家放松,什么也没搞,论文就让老师催吧.不过,闲的没事干的感觉真是不好,还是看看书,写写博客吧,今天和大家说说函数的原型. 原型是什么 第一次看到这个的时 ...

  6. Crt单元

    一.调用单元例:uses crt; 二.清屏例:clrscr; 三.移动光标例:gotoxy(a,b);其中a表示列号,b表示行号 四.清行例:clreol;清除光标所在行光标上及以后的所有字符 五. ...

  7. onmouseover和onmouseout的那些事

    这篇文章来自一个偶然...以前刚开始学习javascript事件的时候就被一个东西搞得晕头撞向的.就是一对名字很相近的事件.一组是onmouseover()和onmouseout().另一组就是onm ...

  8. DevExpress ChartControl大数据加载时有哪些性能优化方法

    DevExpress ChartControl加载大数据量数据时的性能优化方法有哪些? 关于图表优化,可从以下几个方面解决: 1.关闭不需要的可视化的元素(如LineMarkers, Labels等) ...

  9. DataGridView控件的各种操作总结

    一.单元格内容的操作 *****// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index ...

  10. 如何利用tomcat和cas实现单点登录(2):配置cas数据库验证和cas客户端配置

    接(1),上一篇主要讲述了tomcat和cas server端的部署. 接下来主要还有两个步骤. 注意:为了开启两个tomcat,要把直接配置的tomcat的环境变量取消!!!!!!!!!! 客户端配 ...