如何获取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
相关产品推荐
相关产品推荐

