【问题标题】:Access JavaScriptSerializer in Javascript在 Javascript 中访问 JavaScriptSerializer
【发布时间】:2012-11-19 09:36:58
【问题描述】:

我有一个 json 数组,我将其序列化, how do I access it in the javascript. I am using javascriptamchartsand want to passvb.net` 数组到 javascript 图表。 代码如下:

VB

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    DataSetToJSON()
End Sub
Public Function SelectChartData(ByVal Name As String) As DataSet
    Dim sqlCmd As New SqlCommand
    Dim myData As New DataSet

    sqlCmd.CommandTimeout = 1200

    sqlCmd.CommandType = CommandType.StoredProcedure
    sqlCmd.CommandText = "SelectAmChartdata"

    sqlCmd.Parameters.Add("@Name", SqlDbType.VarChar)
    sqlCmd.Parameters("@Name").Value = Name

    Dim da As New dsSV1TableAdapters.tblGeneralTableAdapter

    da.Adapter.SelectCommand = sqlCmd

    sqlCmd.Connection = da.Connection
    sqlCmd.Connection.Open()
    da.Adapter.Fill(myData)

    sqlCmd.Dispose()
    sqlCmd = Nothing

    da.Connection.Close()
    da.Connection.Dispose()
    da.Connection = Nothing

    Return myData

End Function

Public Function DataSetToJSON()
    Dim dt As DataTable
    ds = SelectChartData("Weather")


    Dim dict As New Dictionary(Of String, Object)

    For Each dt In ds.Tables
        Dim arr(dt.Rows.Count) As Object

        For i As Integer = 0 To dt.Rows.Count - 1
            arr(i) = dt.Rows(i).ItemArray
        Next

        dict.Add(dt.TableName, arr)
    Next

    Dim json As New JavaScriptSerializer
    Return json.Serialize(dict)

End Function

ASPX

<script type="text/javascript">

//var chartData =  **Access Serverside Array**

    window.onload = function () {
    var chart = new AmCharts.AmSerialChart();
    chart.dataProvider = chartData;
    chart.categoryField = "country";
    chart.marginTop = 15;
    chart.marginLeft = 55;
    chart.marginRight = 15;
    chart.marginBottom = 80;
    chart.angle = 30;
    chart.depth3D = 15;

    var catAxis = chart.categoryAxis;
    catAxis.gridCount = chartData.length;
    catAxis.labelRotation = 90;

    var graph = new AmCharts.AmGraph();
    graph.balloonText = "[[category]]: [[value]]";
    graph.valueField = "visits"
    graph.type = "column";
    graph.lineAlpha = 0;
    graph.fillAlphas = 0.8;
    chart.addGraph(graph);

    chart.write('chartContainer');
}
</script

【问题讨论】:

    标签: javascript asp.net json serialization


    【解决方案1】:

    您可以将序列化数据直接转储到 ASPX 页面中:

    <script type="text/javascript">
    
        var my_data = <%= DataSetToJSON() %>;
    
    </script>
    

    或者您可以在 ASPX 页面中使用:

    <input type="hidden" id="my_data" clientidmode="static" runat="server" value="" />
    

    在代码隐藏中:

    my_data.Value = DataSetToJSON();
    

    然后您可以使用document.getElementById('my_id').value 提取数据,使用类似JSON.parse 的方式对其进行解码,然后将其传递到您的图表中。

    【讨论】:

    • 感谢您的出色工作。我遇到的另一个问题是我的数组,目前我的数组作为 var chartData = {"tblGeneral":[["USA","100"],["RSA","80"],["RUSS ","99"],["UK","70"],["AUS","60"],["GER","180"],["SWISS","50"],["FRA ","30"],null]};
    • 我怎样才能传递字段名称如下的数组,似乎图表需要 var chartData = {"tblGeneral":[[country: "USA", visit: "100"], [国家:“RSA”,访问:“80”],[国家:“RUSS”,访问:“99”],[国家:“英国”,访问:“70”],[国家:“AUS”,访问:"60"],[国家:"德国",访问:"180"],[国家:"瑞士",访问:"50"],[国家:"FRA",访问:"30"],null] };再次感谢。
    • 您需要自己转换数据,例如 - pastepal.net/view/3d3021b6
    • 感谢@Lloyd 你的救命稻草
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 2013-06-08
    • 2014-08-07
    • 2013-10-19
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多