繁体   English   中英

查看JavaScript后如何在序列化后使用json字符串?

[英]How to use json string after Serialization in view javascript?

我想序列化一个JSON字符串,但是当我通过JSON进行查看时,我看到我的代码属性为字符串格式,这可能就是为什么我的代码无法正常工作的原因。 我的代码在以下代码中序列化:

var data = new ChartData
{
    labels = new ChartLabels
    {
        labels = new string[3] {"Open", "Close", "Nothing"}
    },
    datasets = new ChartDatasets
    {
        data = new int[3] {20, 10, 3},
        backgroundColor = new string[3] {"#ccf9d6", "#ccf9d6", "#ccf9d6"},
        borderWidth = 1
    }                
};
var json = new JavaScriptSerializer().Serialize(data);
ScriptManager.RegisterStartupScript(
    this, 
    GetType(),
    "ServerControlScript", 
    "addChart(" + json + ");", 
    false);

我想在我的JavaScript函数中使用它:

function addChart(data) {
    var ctx = document.getElementById("myChart");
    var myChart = new Chart(ctx, data);

编辑:杰森看起来像下面:

{"labels":
    {
        "fontSize":0,
        "boxWidth":0,
        "labels":["Open","Close","Nothing"]},
        "datasets":{"label":null,"data":[20,10,3],
        "backgroundColor":["#ccf9d6","#ccf9d6","#ccf9d6"],
        "borderWidth":1 
    }
}

有什么办法可以将其转换为正确的格式? 或者只是将其放入JavaScript变量中?

MDN所述

JSON.parse()方法解析一个JSON字符串,以构造该字符串描述的JavaScript值或对象。

好像正在执行addChart javascript方法调用,但是正在获取字符串而不是预期的JSON对象,因此必须对该字符串进行解析。

在不了解应用程序更广泛的上下文的情况下,很难给出一个很好的答案,因为有几种方法可以实现目标。 不过,最简单的方法是将行"addChart(" + json + ");",更改为"addChart(JSON.parse(" + json + "));",以便当应用程序执行此javascript时,json字符串将由javascript引擎解析,并成为addChart方法期望的javascript对象。

我对ScriptManager不熟悉,我喜欢在Chrome中进行调试时像预期的那样出现,因此这就是我将使用页面上的asp:Literal攻击它的方式。

ASP页:

<script src="assets/js/bootstrap.js" type="text/javascript">
</script>
<asp:Literal runat="server" ID="aspchartdata"></asp:Literal>

背后的代码:

var data = new ChartData
{
    labels = new ChartLabels
    {
        labels = new string[3] {"Open", "Close", "Nothing"}
    },
    datasets = new ChartDatasets
    {
        data = new int[3] {20, 10, 3},
        backgroundColor = new string[3] {"#ccf9d6", "#ccf9d6", "#ccf9d6"},
        borderWidth = 1
    }                
};

    aspchartdata.Text = "<script> var data=" + JsonConvert.SerializeObject(data); + "</script>";

现在,您可以在Javascript中使用一个数据变量。

在服务器端,您的文字被新脚本替换以定义变量,现在您可以在ASPX页面中以简洁的方式处理onload运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM