有时候我们使用Ajax链接一般处理程序需要返回多个值,然而这些数据并非在一个查询表内,此时便想到构造一个虚拟的DataTable,这样就可以返回多个值了(当然有很多办法,这是其中一种 )。

首先我们需要准备一个 script 和一个 ashx 文件。

在script中写一个ajax用于接收返回来的数据,代码如下。

<script type="text/javascript">
        $(function () {
            $.ajax({
                type: "post",                          //提交方式
                url: "/ashx/PersonnelRegistrationForm.ashx",        //一般处理程序的路径
                data: { corpName: corpName, corpCode: corpCode },           //向后台传入的值
                success: function (data) {              //返回成功后将要做的事,这里是返回一个表
                    var datainfo = $.parseJSON(data);            alert(datainfo[0].OrderNo);             alert(datainfo[0].RowGuid);                    alert(datainfo[0].ResultNum);
                },
                error: function () {
                    alert('系统发生错误');
                }
            });
        })
    </script>

然后在名为PersonnelRegistratinForm一般处理程序进行数据处理,然后构造所需要的值将其返回。

        #region 构造返回的表
            DataTable table = new DataTable();      //构造表
            DataColumn column1 = new DataColumn("ResultNum", Type.GetType("System.Int32"));  //构造列及所对应的类型
            DataColumn column2 = new DataColumn("OrderNo", Type.GetType("System.String"));
            DataColumn column3 = new DataColumn("RowGuid", Type.GetType("System.String"));
            table.Columns.Add(column1);             //将列添加到table表中
            table.Columns.Add(column2);
            table.Columns.Add(column3);
            DataRow dr = table.NewRow();            //table表创建行
            dr["ResultNum"] = person_result;
            dr["OrderNo"] = OrderNo;
            dr["RowGuid"] = t_ROWGUID;
            table.Rows.Add(dr);                     //将数据加入到table表中

            string json = SerializerHelper.ToJsonString(table);     //序列化json对象
            context.Response.Write(json);
            context.Response.End();
            #endregion

构造table时可以使用简便写法:

            DataTable table = new DataTable();      //构造表
            table.Columns.Add("ResultNum", Type.GetType("System.Int32"));
            table.Columns.Add("OrderNo", Type.GetType("System.String"));
            table.Columns.Add("RowGuid", Type.GetType("System.String"));
            DataRow dr = table.NewRow();            //table表创建行
            dr["ResultNum"] = person_result;
            dr["OrderNo"] = OrderNo;
            dr["RowGuid"] = t_ROWGUID;
            table.Rows.Add(dr);                     //将数据加入到table表中        

 这样前台的ajax就可以获取到返回过去的table了。当然别忘记引用命名空间

using System.Data;
using System.Data.SqlClient;
using System.Text;

.NET 构造DataTable返回多个json值的更多相关文章

  1. .NET 构造Class返回多个json值

    上次总结使用DataTable返回多个值,后来看到一个小哥的返回方式和我的有所不同,便留意了一下.原来他构造一个Class,而我构造的是一个Table. 首先说说两者的区别:拿student举例,st ...

  2. Nginx根据用户请求的不同参数返回不同的json值

    用户请求url:http://localhost:8000/getconfig?v=1.03.01,根据参数v=1.03.01或者其他的值返回不同的json值.如果用户请求不带该参数,则返回默认的js ...

  3. Mysql 返回JSON值属性的函数 (五)

    本节中的函数返回JSON值的属性. JSON_DEPTH(json_doc) 返回JSON文档的最大深度.NULL如果参数为,则 返回 NULL.如果参数不是有效的JSON文档,则会发生错误. 一个空 ...

  4. ashx将datatable返回json数据

    1.直接使用JsonConvert.SerializeObject().将datatable放入  输出字符串 下面是测试:用webform+ashx作为接口. public class GetJso ...

  5. .net和MVC中的json值和List<T>和DataTable的一些转换

    1.List<T>集合转换为Json值 List<ReportModel> dtList = new List<ReportModel>(); JsonResult ...

  6. EasyUI - 一般处理程序 返回 Json值

    使用 一般处理程序(ashx)返回Json值. 原始Json数组的格式: [ { ", "name":"张三", "sex":&q ...

  7. JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串;JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象

    JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串:JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象

  8. C#中当服务器返回的数据json中key的值为数字类型,解决方案

    客户端向服务器发送请求后,服务器返回了一个json格式的字符串但是格式中key的值有些事数字{"1000":"55555"}; 类似这种格式的话就不能直接转化成 ...

  9. DataTable ,XML和JSON相互转化

    网上搜集的,保留下来了,有需要的拿去!private string DataTable2Xml(DataTable dt) { StringBuilder xmlBuilder = new Strin ...

随机推荐

  1. D. Kilani and the Game(多源BFS)

    题目来源:http://codeforces.com/contest/1105/problem/D 题意:编号为1-k的点在一张n*m的表格中依次扩散,每个结点有各自的扩散速度且只可以往上下左右四个方 ...

  2. 高级编程T-SQL函数

    --字符串函数--1.LEN:返回一个字符串的字符数select LEN('中国'),LEN('abc123!')select LEN('abc '+'1'),LEN(' abc')--2.DataL ...

  3. 725. Split Linked List in Parts把链表分成长度不超过1的若干部分

    [抄题]: Given a (singly) linked list with head node root, write a function to split the linked list in ...

  4. 判断是否是json

    转:https://blog.csdn.net/dy_smile/article/details/46739251 function isJson(obj) { var isjson = typeof ...

  5. VirtualBox 克隆后 IP 地址相同(DHCP 分配),如何变更MAC以获取不同的IP?

    由于需要做实验需要两个相同环境的虚拟机,在linux下使用virtualbox最小化安装centos6.0,并克隆了一个相同的,联网模式为桥接,修改配置文件之后重启网络发现二者的网络信息相同,所获取的 ...

  6. Python:每日一题006

    题目:斐波那契数列. 程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.…… 个人思路及代码: # 方 ...

  7. c++11 线程池学习笔记 (二) 线程池

    学习内容来自以下地址 http://www.cnblogs.com/qicosmos/p/4772486.html github https://github.com/qicosmos/cosmos ...

  8. Vue post提交

    vue中的axios 是不直接支持post方法的,所以我们得绕一下路,我目前在登录的时候运用到了,服务器端用php,可以收到数据 let param = new URLSearchParams(); ...

  9. 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验一 Java开发环境的熟悉 实验报告

    20175316 盛茂淞 2018-2019-2 <Java程序设计>实验一 Java开发环境的熟悉 实验报告 一.实验要求 1.使用JDK编译.运行简单的Java程序: 2.使用IDEA ...

  10. 2019.03.04 bzoj5308: [Zjoi2018]胖(二分答案+st表)

    传送门 想题5分钟调题两小时系列 其实还是我tcl 读完题之后自然会知道一个关键点能够更新的点是一段连续的区间,于是我们对于每个点能到的左右区间二分答案,用ststst表维护一下查询即可. 代码: # ...