意外的令牌, - asp值显示为未定义

时间:2013-06-26 10:42:08

标签: javascript jquery asp.net vb.net visual-studio-2008

我正在尝试使用数组json将一些数据从vb.net上传到asp.net。

我的代码:

 <script type="text/javascript">
   $(function() {

       var a = $("#hidden").val();
       var array = JSON.parse(a);

然而,当我在浏览器上调试它时,“a”和“数组”显示为未定义。即使它背后的代码显示了价值..

经过进一步调查后,我发现如果是这样的话,那就有效了:

  var a = "[1, 2, 3]";
  var array = JSON.parse(a);

请注意它显示为字符串,但是当我接受字符串:

  var a = [1, 2, 3];
  var array = JSON.parse(a);

它表示未定义 - 未捕获的SyntaxError:意外的令牌,我猜测它与JSON有关。

现在回到我的代码和我的错误: 代码背后(vb)

    Dim array As New ArrayList

    For Each row In ChartData.Rows
        array.Add(row("Day"))
    Next row

    Dim serializer As New JavaScriptSerializer()
    Dim arrayJson As String = serializer.Serialize(array)

    hidden.Value = arrayJson

和asp。

中的代码
     <asp:HiddenField ID="hidden" runat="server" />         
    var a = $("#hidden").val();
       var array = JSON.parse(a);

我的问题是,为什么显示未定义!我做错了什么。

感谢

2 个答案:

答案 0 :(得分:1)

在asp.net上,渲染的id不是您在代码后面使用的ID,要在页面上获取它,您需要使用ClientID

var a = $("#<%=hidden.ClientID%>").val();

答案 1 :(得分:0)

Json.parse接受一个字符串并返回一个json对象。它需要一个有效的json输入才能解析输入,这是一个字符串。您也可以在调用JSON.stringify之前使用parse方法,以确保将输入作为字符串传递。