一、将前台数据,使用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. 基于MVC4+EasyUI的Web开发框架形成之旅--总体介绍

    最近花了很多时间在重构和进一步提炼Winform开发框架的工作上,加上时不时有一些项目的开发工作,我博客里面介绍Web开发框架的文章比较少,其实以前在单位工作,80%的时间是做Web开发的,很早就形成 ...

  2. testNG中同一个test节点上class的执行顺序

    如果每个class中都有setUp(),那么先执行所有class的setUp方法,之后再执行具体的测试方法.这样就导致只有最后一个测试能通过,其他测试都失败了. 具体设置如下图:

  3. Kafka/Metaq设计思想学习笔记 转

    转载自: http://my.oschina.net/geecoodeer/blog/194829 本文没有特意区分它们之间的区别,仅仅是列出其中笔者认为好的设计思想,供后续设计参考. 目前笔者并没有 ...

  4. mfc_随机数生成器

    vc++6.0 内涵图

  5. codeforces 659 G. Fence Divercity 组合数学 dp

    http://codeforces.com/problemset/problem/659/G 思路: f(i,0/1,0/1) 表示到了第i个,要被切的块开始了没有,结束了没有的状态的方案数 递推看代 ...

  6. connectionString加密

    首先是加密,解密类. using System; using System.Collections.Generic; using System.IO; using System.Linq; using ...

  7. 利用WCF的双工通讯实现一个简单的心跳监控系统 z

    利用WCF的双工通讯实现一个简单的心跳监控系统 http://www.cnblogs.com/zuowj/p/5761011.html 何为心跳监控系统? 故名思义,就是监控某个或某些个程序的运行状态 ...

  8. Zero Requiem

    “最后是在游行.暴君鲁路修高居王座,两侧列着所有反对者的代表:黑色骑士团.黎星刻.原圆桌骑士名列第三的吉诺,以及一身女囚装的娜娜丽,他们都即将被公开处死.尤菲米娅在第一次“特别行政区•日本”成立仪式上 ...

  9. powerDesigner 报Unable to connect SQLState=08004 解决方法

    在使用PowerDesigner配置数据库连接(configure connections)的时候,点击Test connection之后弹出Unable to connect SQLState=08 ...

  10. Linux 11g rac PSU

    PSU补丁:p22191577_112040_Linux-x86-64.zipOPATCH工具:p6880880_112000_LINUX.zip 解压OPATCH工具 覆盖到/u01/11.2.0/ ...