一、将前台数据,使用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. Android控件之SlidingDrawer(滑动式抽屉)详解与实例

    SlidingDrawer效果想必大家也见到过,它就是1.5模拟器上进入应用程序列表的效果.下面是截图 一.简介 SlidingDrawer隐藏屏外的内容,并允许用户通过handle以显示隐藏内容.它 ...

  2. 高效Web开发的10个jQuery代码片段(10 JQUERY SNIPPETS FOR EFFICIENT WEB DEVELOPMENT)

    在过去的几年中,jQuery一直是使用最为广泛的JavaScript脚本库.今天我们将为各位Web开发者提供10个最实用的jQuery代码片段,有需要的开发者可以保存起来. 1.检测Internet ...

  3. 【freemaker】之获取xml的值

    测试代码 @Test public void test09() throws Exception{ root.put("doc", NodeModel.parse(new Inpu ...

  4. oracle11g安装和基本的使用-转载

    一.测试操作系统和硬件环境是否符合,我使用的是win2008企业版.下面的都是step by step看图就ok了,不再详细解释. 请留意下面的总的设置步骤:--------------------- ...

  5. Perl 随笔

    1.    .pl  文件带入参数: ./auto_cfg.pl ./mconfig.config ./boardconfig.config ./menuconfig.config .ver  ./a ...

  6. [jQuery]html(),text(),val()方法的区别

    1.HTML html():取得第一个匹配元素的html内容.这个函数不能用于XML文档.但可以用于XHTML文档 html(val):设置每一个匹配元素的html内容.这个函数不能用于XML文档.但 ...

  7. ADF_Data Binding系列1_使用Bean Data Control

    2015-02-16 Created By BaoXinjian

  8. razor 拼接字符串

    在asp.net引擎中 拼接字符串可以这样写 <script src="~/script/<%=scriptname%>.js"></script&g ...

  9. 1 、Linux-Rhel6终端介绍-Shell提示符

    1.Linux 终端介绍 tty-控制台终端: RHEL6 tty1-tty6  tty就是图形界面 从图形界面切换到字符界面: ctrl+shift+alt +F2~F6 从字符界面切换图形或字符: ...

  10. mysql 数据库乱码解决

    mysql 数据库乱码解决, 进入前加入 set names 'utf8'  即可.