其实Json也就是一种数据的格式,在后台将数据封转为一种格式,然后在前台用相同的方法解析,类似于序列化。json格式主要是由键值对组成,它可以表示多个数据。比如

{name:zhangsan,age:12,class:1}

同时json 还可以表示一个数据集,它是又{}和: 来组成的。比如我们需要从数据库查询出一张表格,然后将表格传输给前台,但是dataset是不能直接传输的,我们需要将dataset数据转换为json数据,这样可以方便前台js解析数据,下面我来写一下转换的格式

{Name:表的名称,Rows:[{SName:姓名,SAge:年龄}{...}{...}]}这是一张表格的数据格式,

{Tables:[{Name:表1的名称,Rows:[{SName:姓名,SAge:年龄}{...}{...}]}{Name:表2的名称,Rows:[{SName:姓名,SAge:年龄}{...}{...}]}]}这是多张表的数据格式

下面用一个例子来给大家演示一下数据集得传输

首先我们需要一个前台页面来获取数据 studentinfo.html,在这个页面中我们有一个函数来获取Json格式的数据,jquery 很好的为我们封装了一个这样的函数,JSON.parse();

function getData() {

$("#data").val("");

jQuery.post('../ashx_for_request/getdataset.ashx', {}, function (data) {//data为后台传输过来的数据

var obj = JSON.parse(data); //将后天传输的数据转换为Json格式

$("#data").html("");

$.each(obj.Tables, function (index, table) {//遍历数据集表格,输出数据集的内容

//根据不同的表名,显示不同的字段。得到特定表,table = obj.Tables[0]

var tableName = table.Name;

$.each(table.Rows, function (index, row) {//遍历数据集表格中的行

$("#data").html($("#data").html() + row.SID + row.SName + row.SAge + row.SClass + row.SSex + row.SGrade + ""); //每行的每一个列的内容 在这里我们用row.colname来获取每一行每一列的内容

});

});

})

}

我们用到的是jquery 的post函数来从后台获取数据,然后将数据解析,现在我来演示一下后台的数据格式

private String GetDataSet()

{

System.Data.DataSet ds = new System.Data.DataSet();

//测试用数据

using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("server=.;database=Student;uid=sa;pwd=123456"))

{

using (System.Data.SqlClient.SqlCommand com=conn.CreateCommand())

{

com.CommandText = "select * from BaseNews";

System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(com);

da.Fill(ds);

}

}

return Dataset2Json(ds);

}

///

/// dataTable转换成Json格式

///

///

///

public static string DataTable2Json(System.Data.DataTable dt)

{

StringBuilder jsonBuilder = new StringBuilder();

jsonBuilder.Append("{\"Name\":\"" + dt.TableName + "\",\"Rows");

jsonBuilder.Append("\":[");

for (int i = 0; i < dt.Rows.Count; i++)

{

jsonBuilder.Append("{");

for (int j = 0; j < dt.Columns.Count; j++)

{

jsonBuilder.Append("\"");

jsonBuilder.Append(dt.Columns[j].ColumnName);

jsonBuilder.Append("\":\"");

jsonBuilder.Append(dt.Rows[i][j].ToString().Replace("\"", "\\\"")); //对于特殊字符,还应该进行特别的处理。

jsonBuilder.Append("\",");

}

jsonBuilder.Remove(jsonBuilder.Length - 1, 1);

jsonBuilder.Append("},");

}

jsonBuilder.Remove(jsonBuilder.Length - 1, 1);

jsonBuilder.Append("]");

jsonBuilder.Append("}");

return jsonBuilder.ToString();

}

///

/// DataSet转换成Json格式

///

///DataSet

///

public static string Dataset2Json(System.Data.DataSet ds)

{

StringBuilder json = new StringBuilder();

json.Append("{\"Tables\":");

json.Append("[");

foreach (System.Data.DataTable dt in ds.Tables)

{

json.Append(DataTable2Json(dt));

json.Append(",");

}

json.Remove(json.Length - 1, 1);

json.Append("]");

json.Append("}");

return json.ToString();

}

给大家看一下结果

大家可以根据得到的数据给出相应的格式

大家不要以为到这里就完成了哦,Json格式在不同的浏览器下会有兼容性问题,这时大家只需下载一个json2的js即可。

ajax传递对象数据集,用jquery和json从后台获得数据集的代码相关推荐

  1. java获取ajax传的数组对象,ajax传递对象数组

    ajax data怎么传对象数组 参考代码如下: var as = []; var temp = []; for ( var int = 0; int < 5; int++) { temp.pu ...

  2. SpringMVC @RequestBody ajax传递对象数组

    2019独角兽企业重金招聘Python工程师标准>>> 1. 前端js对象数组转换为json字符串 JSON.stringify(list) 2. 前端ajax函数配置dataTyp ...

  3. ajax 传递对象 返回状态500

    在ajax请求的时候,一直返回500错误,后台参数是用对象接收,返回500,肯定是请求到了后台,但是没进方法体,说明在参数转换的时候出错,最后原因是:前台传递参数时候有个字段有特殊字符包含空格. 解决 ...

  4. ajax传递对象数组

    1.Json.stringify()是将json数据格式转换成String类型字符串的方法. 后台可以使用String类型接受,接收完可以使用json转换java集合的方法. List<实体类& ...

  5. php变量在html调用函数调用,PHP_如何在html标记中调用的函数里传递对象,最近使用jquery结合Ajax开发一个 - phpStudy...

    如何在html标记中调用的函数里传递对象 最近使用jquery结合Ajax开发一个中小型网站应用.在后台管理中要使用Ajax调用系统功能,根据Ajax的返回结果,使用jQuery对前台页面进行操作. ...

  6. ajax+php+jq+面向对象,php+jquery+ajax+json的一个最简单实例

    html页面: $(function(){ $("#send").click(function(){ var cont = $("input").seriali ...

  7. jQuery ajax 传递JSON数组到Spring Controller

    jQuery ajax传递单个JSON对象到后台很容易,这里记录的是传递多个JSON对象组成的JSON数组到java 后台,并说明java如何解析JSON数组. 1.js代码 var relation ...

  8. jquery ajax json传递数组,jQuery ajax 传递JSON数组到Spring Controller

    jQuery ajax传递单个JSON对象到后台很容易,这里记录的是传递多个JSON对象组成的JSON数组到java 后台,并说明java如何解析JSON数组. 1.js代码 var relation ...

  9. Spring MVC前后台交互(前台ajax传递数据,后台controller接收数据返回json对象)

    1.导入jar包 2.JS中用ajax传递用户数据 var data={origin:"register",tel:tel,pwd:pwd};$.ajax({url : " ...

最新文章

  1. c语言编程常见问题解答 pdf,[编程语言]C语言常见问题集pdf pdf文件[1.35MB]-码姐姐下载...
  2. 约瑟夫问题(优化优化再优化)
  3. Python tensorflow ModuleNotFoundError: No module named ‘tensorflow.contrib‘
  4. 必看 | VLAN划分和网络配置实例
  5. DISCUZ 嵌入点 输出插件模版内容
  6. java私有属性和私有方法_Java接口–历年来Java 9之旅–默认方法和私有方法
  7. Memcached安装与使用实例
  8. 计算机网络class2(标准化工作及相关组织)
  9. javaScript 对象访问属性的另一种方式
  10. python脚本调度程序_python任务调度实例分析
  11. Python中Selenium设置无界面访问
  12. [教程]黑莓终极中文混刷教程 终身受用
  13. 二十一个心理学效应 笔记
  14. 量子计算机模拟黑洞纠缠,科学家想用量子纠缠探查黑洞内部?那得先找到自旋方向相反的光子...
  15. 一个三非渣本的安卓秋招之路
  16. 白话 RESTful,OpenApi(OAS),Swagger
  17. PrimeNG安装使用
  18. C语言-B树(B-树)的完整实现
  19. 数字图像处理——第七章(小波变换和多分辨率处理)
  20. 5G-NR通信标准介绍

热门文章

  1. R语言dataframe分组数据汇总(aggregate and sum):类似于excel的sumif函数
  2. R语言可视化包ggplot2包改变边距(margin)实战(Modify the Margins)
  3. R语言tidyr包spread()函数实战详解:数据裂变、从窄表到宽表
  4. R使用Iris数据集构建SVM分类器
  5. 反式自动微分autodiff是什么?反向传播(Back Propagation)是什么?它是如何工作的?反向传播与反式自动微分autodiff有什么区别?
  6. python代码获取今天、昨天、明天的日期
  7. python实现快排算法(quicksort)
  8. Python使用re模块进行正则匹配日期和时间
  9. oracle failovermode,[WK-T]ORACLE 10G 配置故障转移(Failover)
  10. 模型量化--TBN:Convolutional Neural Network with Ternary Inputs and Binary Weights