如何访问javascript中的servlet变量



我有一个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;

最新更新