1

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

我的代码:

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

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

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

经过进一步调查,我发现如果是这样的话,它可以工作:

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

请注意,它显示为字符串,但是当我获取以下字符串时:

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

它说它的未定义 - 未捕获的语法错误:意外的令牌,我猜测它与 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);

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

谢谢

4

2 回答 2

1

在 asp.net 上,呈现的 id 不是您在后面的代码中使用的,要在页面上获取它,您需要使用ClientIDas:

var a = $("#<%=hidden.ClientID%>").val();
于 2013-06-26T10:52:52.447 回答
0

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

于 2013-06-26T10:51:58.453 回答