You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取HiddenField值并赋值给tokenizer的source变量?

问题:正确获取HiddenField值并赋值给Tokenizer的source变量

看起来你在ASP.NET环境下用隐藏控件存数组值,然后想把它传给前端的tokenizer组件,但目前的获取方式有问题,我来帮你捋清楚:

首先,咱们得先解决服务端赋值的问题:你直接给hfPRData.value赋了一个数组,但ASP.NET的HiddenField控件会把这个数组默认转换成逗号分隔的字符串(比如变成"val1,val2,val3"),而不是前端能直接用的JSON数组。所以第一步要把数组序列化成JSON格式的字符串:

// C#示例,记得引用System.Web.Script.Serialization
var serializer = new JavaScriptSerializer();
hfPRData.Value = serializer.Serialize(new[] { "val1", "val2", "val3" });

这样服务端输出的隐藏控件value就是标准的JSON数组字符串:["val1","val2","val3"]。

接下来是前端获取并转换:你之前用map方法完全没必要,因为只有一个隐藏输入控件,直接取它的value然后解析成JS数组就行:

<script>
    // 获取隐藏控件的JSON字符串值,解析成JavaScript数组
    var source = JSON.parse($('input[type="hidden"][name="POSITION[]"]').val());
    // 初始化tokenizer
    $('#myinput').tokenizer({ source: source });
</script>

如果不想用jQuery,原生JS写法更简单:

<script>
    var hiddenInput = document.getElementById('hfPRData');
    var source = JSON.parse(hiddenInput.value);
    $('#myinput').tokenizer({ source: source });
</script>

为什么之前的写法不行?

  • 你用map遍历的是所有匹配的隐藏控件,但这里只有一个,所以map返回的是一个包含单个逗号分隔字符串的数组,不是你要的['val1','val2','val3']。
  • 服务端直接赋值数组的话,输出的不是JSON格式,前端拿到的是普通字符串,没法直接当数组用,必须用JSON.parse解析成真正的JS数组。

内容的提问来源于stack exchange,提问作者aparna rai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:21:59