我的jsp代码是
<% List selected = (List) session.getAttribute("clist");
JSONArray arr = new JSONArray();
JSONObject tmp;
for (int i = 0; i < selected.size(); i++) {
tmp = new JSONObject();
tmp.put("Id", selected.get(i));
arr.put(tmp);
}%>
我正在使用隐藏字段将此数组传递给javascript
<input type='hidden' id="agencycontactid" name="agencycontactid" value="<%=(null != arr) ? arr : ""%>" />
这里 arr 给出值 arr = [{&#34; Id&#34;:&#34; 9&#34;},{&#34; Id&#34;: &#34; 11&#34;}]
我的javascript代码是
var s=$('#agencycontactid').val(); alert(s);
但警报仅提供 [{
请帮帮我
由于
答案 0 :(得分:0)
从
更改值attrvalue="<%=(null != arr) ? arr : ""%>"
到
value='<%=(null != arr) ? arr : ""%>'
答案 1 :(得分:0)
您的scriptlet中的变量arr
将作为包含内容[{"Id":"9"},{"Id":"11"}]
的字符串传递给HTML,因此您的输入标记将如下所示:<input type='hidden' id="agencycontactid" name="agencycontactid" value="[{"Id":"9"},{"Id":"11"}]" />
。因此,value属性只包含字符串中第一个"
的部分,即[{
。
你可以尝试将json数据放在"
不会干扰HTML的地方,比如像隐藏标签一样
<div id="jsondata">
<%=arr%>
</div>
或将scriptlet放在<script>
标记内:
<script type="text/javascript">
var s = <%=arr%>;
</script>
将value属性的分隔符更改为'
而不是"
也会有效,但只要json数据中包含'
的字符串,就会中断。但是,如果您确定永远不会出现这种情况,那么这是迄今为止最容易解决的问题。