在Javascript中,我调用一个函数从数据表中检索数据并将其转换为javascriptSerializer,然后在Javascript图表中使用数据。一切工作正常,第一次,当我改变数据集选择参数即日期等,并再次调用函数PopulateChart()试图拉一个新的数据集,我有一个问题在javascript中检索它。数据和json字符串在服务器上正确填充,但不在客户端上,旧数据字符串仍然存在。Javascript访问JavascriptSerializer JSON字符串正确
变种chartData仍显示旧的数据,甚至通过返回serializer.Serialize(行)显示服务器
下面是我的代码和我想要实现对正确的数据。
ASPX
var chartData = <%= PopulateChart() %>;
VB
Public Function PopulateChart() As String
''Get Chart Data
Dim daChart As New dsSVTableAdapters.clsChart
Dim dtChart As New dsSV.webV1_ChartsDataTable
Dim drChart As dsSV.webV1_ChartsRow
dtChart = daChart.GetChart(hChartID.Value)
If dtChart.Rows.Count > 0 Then
drChart = dtChart.Rows(0)
hChartName.Value = drChart.Description
HInterval.Value = drChart.Interval
Dim dtData As DataTable
Dim ds As New DataSet()
ds = GetData(4, DateTime.Parse("2012-05-01"), DateTime.Parse("2012-06-30"))
dtData = ds.Tables(0)
Dim serializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer()
Dim rows As New List(Of Dictionary(Of String, Object))
Dim row As Dictionary(Of String, Object)
For Each dr As DataRow In dtData.Rows
row = New Dictionary(Of String, Object)
For Each col As DataColumn In dtData.Columns
If col.ColumnName = "DateAndTime" Then
Dim dts As DateTime = DateTime.Parse(dr(col).ToString())
row.Add(col.ColumnName, dts.ToString("yyyy-MM-dd hh:mm:ss"))
ElseIf col.ColumnName = "Time" Then
Dim ts As DateTime = DateTime.Parse(dr(col).ToString())
row.Add(col.ColumnName, ts.ToString("hh:mm:ss"))
Else
row.Add(col.ColumnName, dr(col))
End If
Next
rows.Add(row)
Next
serializer.MaxJsonLength = Int32.MaxValue
Return serializer.Serialize(rows)
End If
End Function
如果你的问题是JavaScript的一部分,向我们展示了JavaScript代码和服务器响应的外观 – Bergi
我已经更新了我的帖子有更多的代码,并试图进一步解释,如果它仍然不清楚让我知道由于@Bergi – user1588253
'变种chartData = <(%)= PopulateChart()%>;'不会动态地在客户端,因为它是在页面加载仅评估服务器侧更新。 –