gpt4 book ai didi

javascript - 将 JSON 从 C# 发送到 JavaScript

转载 作者:行者123 更新时间:2023-11-29 10:11:30 30 4
gpt4 key购买 nike

如果我在 C# 中使用 JSON 序列化一个对象,从 C# 发送它、在 Javascript 中接收它并在 JS 中反序列化它的最好/最简单的方法是什么?

现在我正在尝试这个,但它似乎不起作用

C#

json = JsonConvert.SerializeObject(X);
ClientScript.RegisterArrayDeclaration("data", json);
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "id", "testFunc()", true);

JS

var data;
function testFunc() {
d3.select("#stuff").append("h3").text(data.source);
}

编辑澄清“不起作用”。我浏览了发送 json 的 C# 代码,发送的字符串如下所示

"{\"target\":0,\"source\":1}"

我将它发送到上面的 javascript,但它没有在我的页面上打印任何内容。

我查看了浏览器调试器并看到了这一行

var data =  new Array({"target":0,"source":1});

因此,出于某种原因,根据我有限的知识,数据被发送到 JS 中的 var,不是作为字符串而是作为新数组。

所以我把我的JS改成了

var data;
function testFunc() {
d3.select("#stuff").append("h3").text("Source: " + data[0].source + " Target " + data[0].target);
}

瞧瞧打印出来的值,但为什么 var 没有接收到 C# 发送的 JSON 字符串?我怎样才能让它只发送字符串,以便我可以使用 JSON.parse() 解析它?我想最终发送一个完整的对象列表,让数据以预期的 JSON 字符串形式到达会更容易。

最佳答案

why doesn't the var receive the JSON string as the C# sent?

因为你告诉它用你的 JSON 字符串作为内容构建一个数组:

ClientScript.RegisterArrayDeclaration("data", json);

相反,您自己创建变量并使用 RegisterClientScriptBlock 注册它:

string script = "var data = " + json + ";";
ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "dataVar", script, true);

关于javascript - 将 JSON 从 C# 发送到 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32623744/

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