gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 08:20:41 24 4
gpt4 key购买 nike

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com