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

如何将json数组从jsp传递到javascript?,javascript,jquery,arrays,json,jsp,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));

我的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);
    }%>
但警觉只会让你[{

请帮帮我


感谢您将属性值从更改为

value="<%=(null != arr) ? arr : ""%>"

scriptlet中的变量arr作为字符串传递给HTML,其内容为[{Id:9},{Id:11}],因此您的输入标记将如下所示:。因此value属性将只包含字符串中直到第一个的部分,即[{]

您可以尝试将json数据放在一个不会干扰HTML的位置,比如放在一个隐藏的标记中,比如

<div id="jsondata">
    <%=arr%>
</div>
或者将scriptlet放入标记中:


将value属性的分隔符更改为“而不是”也会起作用,但一旦json数据中包含带“的字符串,分隔符就会断开。但是,如果您确信永远不会出现这种情况,这是迄今为止最简单的修复方法。

将type hidden更改为text,以查看它是否显示正确的json值。我确信问题存在。@gaurav您完全正确。请告诉我如何将arr值设置为隐藏字段您的输入标记如下:@icke如何克服此问题请参阅下面的我的答案,我希望它能有所帮助。它不起作用会产生错误未捕获语法错误:输入意外结束
value="<%=(null != arr) ? arr : ""%>"
value='<%=(null != arr) ? arr : ""%>'
<div id="jsondata">
    <%=arr%>
</div>
<script type="text/javascript">
    var s = <%=arr%>;
</script>