我有一个servlet,它有一个包含JSON字符串的变量。
JSONObject obj = new JSONObject();
obj.put("parameter", jsonList);
request.setAttribute("jsonstring", obj.toString());
RequestDispatcher rd = request.getRequestDispatcher("/file.jsp");
rd.forward(request, response);
现在我将请求和响应对象转发到一个JSP页面,该页面包含一个JS文件。如何访问JS文件中jsonstring变量的值。因为我需要使用jQuery进一步解析我的JSON字符串。
我试着在我的JS文件中这样做,就像我在网上的一些帖子中看到的那样。但它似乎对我不起作用。
var test = '<%=request.getAttribute("jsonstring")%>'
请指导我做同样的事情。Thanx。
如果JSP文件使用<script>
标记加载外部JavaScript文件,则如下所示:
<script type="text/javascript" src="js/yourFile.js"></script>
那么它就不起作用了。您所拥有的是一个JSP scriptlet,它只在JSP文件的执行过程中有意义。yourFile.js
文件不会在服务器端解析,因为它不需要解析。只有浏览器知道如何处理<script>
标记,并向服务器发出加载JavaScript的请求。
在这些情况下,您可以在JSP中执行以下操作:
<script type="text/javascript">
var test = <%=request.getAttribute("jsonstring")%>;
</script>
<script type="text/javascript" src="js/yourFile.js"/></script>
由于JSP scriptlet位于JSP文件中,因此它现在实际上得到了正确的处理,而是为对象/数组输出有效的JSON,以存储在全局范围的test
变量中,然后您可以在yourFile.js
中引用该变量。
试试这个:
var test = <%=request.getAttribute("jsonstring")%>;
否则试试:
var test = eval('<%=request.getAttribute("jsonstring")%>');
我的解决方案如下:
<script type="text/javascript">
var value =<%=request.getAttribute("indicadorId") %>;
</script>
将对象直接放入请求中,如
request.setAttribute("jsonstring", obj);
然后将请求obj分配给js变量,它将作为json对象可访问;
var test = <%=request.getAttribute("jsonstring")%>;
... = test.parameter;