c# - 在同一响应中返回多个 JSON 对象并解析它

标签 c# jquery json

我有以下代码:(为了便于阅读而简化)

C#

        foreach(DataRow dRow in myDS.Tables[0].Rows){
            Company myCompany = new Company();
            myCompany.id = int.Parse(dRow["id"].ToString());
            Companies.Add(myCompany);
        }

        JavaScriptSerializer serializer = new JavaScriptSerializer();
        Response.Write(serializer.Serialize(Companies));
        Response.End();

jQuery

$.getJSON('ajax.aspx?what=' + $('input[name="what"]').val() + '&where=' + $('input[name="what"]').val(), function (data) {
    $.each(data, function (key, val) {
        var myCompany = new function () {
            this.id = val.id;
        }
        Companies.push(myCompany);
    });
});

现在,我在 C# 代码中有另一个对象,名为 Cities 我想在同一个请求中返回它。

类似的东西

Response.Write(serializer.Serialize(Companies));
Response.Write(serializer.Serialize(Cities));
Response.End()

当然会在客户端解析它。

我怎样才能做这样的事情?

最佳答案

您可以将这两个属性包装到一个匿名对象中:

var result = new { Cities = Cities, Companies = Companies };
Response.Write(serializer.Serialize(result);
Response.End();

或者,如果您使用的是一些不支持匿名对象的旧.NET版本,您可以定义一个包装类:

public class Wrapper
{
    public IEnumerable<Cities> Cities { get; set; }
    public IEnumerable<Company> Companies { get; set; }
}

然后:

Wrapper result = new Wrapper();
wrapper.Cities = Cities;
wrapper.Companies = Companies;
Response.Write(serializer.Serialize(wrapper);
Response.End();

还要修复您的 AJAX 调用,因为您没有正确对参数进行 url 编码:

var data = { 
    what: $('input[name="what"]').val(), 
    where: $('input[name="what"]').val() 
};
$.getJSON('ajax.aspx', data, function (data) {
    $.each(data.Companies, function (index, val) {
        var myCompany = new function () {
            this.id = val.id;
        }
        Companies.push(myCompany);
    });
});

关于c# - 在同一响应中返回多个 JSON 对象并解析它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7538345/

相关文章:

javascript - 使用 JavaScript/jQuery 在鼠标悬停时显示元素的 ID

Jquery解析JSON并延迟后追加

json - Postgres 在 SQLite 中相当于搜索 JSON 对象

c# - 在 EF 中将外键 id 设置为 null 非常慢

c# - 如何在不使用 Azure SignalR 服务的情况下从 Azure Function 发送 SignalR 消息

javascript - JQuery 输入类型复选框 prop ("checked", false/true) 执行相反的操作

javascript - Leaflet:使用 if 语句对表中的 geojson 数据进行排序和编辑

json - 如何在机器人框架中将json数据文件加载到变量中?

c# - 如何检查程序集的类型是否为 ComVisible

c# - 我怎样才能对这种方法进行单元测试?