如何将json数组从jsp传递给javascript?

时间:2014-11-07 09:06:37

标签: javascript jquery arrays json jsp

我的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);

但警报仅提供 [{

请帮帮我

由于

2 个答案:

答案 0 :(得分:0)

更改值attr
value="<%=(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数据中包含'的字符串,就会中断。但是,如果您确定永远不会出现这种情况,那么这是迄今为止最容易解决的问题。