意外的标记,.asp值显示为未定义

Unexpected token , - asp value showing as undefined

本文关键字:显示 未定义 asp 意外      更新时间:2023-09-26

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

我的代码:

 <script type="text/javascript">
   $(function() {
       var a = $("#hidden").val();
       var array = JSON.parse(a);

然而,当我在浏览器上调试它时,"a"answers"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);

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

感谢

在asp.net上,呈现的id不是你在代码隐藏中使用的id,要想在页面上显示它,你需要使用ClientID作为:

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

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