2012-11-19 29 views
2

我有一個json數組,我將序列化, how do I access it in the javascript. I am using javascript amcharts and want to pass vb.net數組添加到javascript圖表。 的代碼下面提供:在Javascript中訪問JavaScriptSerializer

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 

回答

0

你可以直接傾倒序列化的數據到一個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對其進行解碼並傳遞到你的圖表。

+0

非常感謝你的工作。我有一個不同的問題是我的數組,目前我的數組傳遞爲var chartData = {「tblGeneral」:[[「USA」,「100」],[「RSA」,「80」],[「RUSS 「 」99「],[ 」UK「, 」70「],[ 」AUS「, 」60「],[ 」GER「, 」180「],[ 」SWISS「, 」50「],[」 FRA 」, 「30」],空]}; – user1835316

+0

我怎樣才能傳遞數組的字段名稱如下,似乎圖表要求var chartData = {「tblGeneral」:[[country:「USA」,visits:「100」],[country:「RSA」,探訪: 「80」],[國家: 「拉斯」,參觀: 「99」],[國家: 「英國」,參觀: 「70」],[國家: 「AUS」,參觀: 「60」],[國家: 「GER」,訪問次數: 「180」],[國家: 「SWISS」,訪問次數: 「50」],[國家: 「FRA」,訪問次數: 「30」],空]};再次感謝。 – user1835316

+0

您需要自己轉換數據,例如 - http://www.pastepal.net/view/3d3021b6 – Lloyd