如何在javascript中访问servlet变量

Arp*_*pit 8 javascript java jsp servlets

我有一个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);
Run Code Online (Sandbox Code Playgroud)

现在我将我的请求和响应对象转发到包含JS文件的JSP页面.如何在JS文件中访问jsonstring变量的值.因为我需要使用jQuery进一步解析我的JSON字符串.

我尝试在我的JS文件中执行此操作,正如我在网上的一些帖子中看到的那样.但它似乎对我不起作用.

var test = '<%=request.getAttribute("jsonstring")%>'
Run Code Online (Sandbox Code Playgroud)

请指导我.Thanx.

Ant*_*ist 6

如果JSP文件使用<script>标记加载外部JavaScript文件,则如下所示:

<script type="text/javascript" src="js/yourFile.js"></script>
Run Code Online (Sandbox Code Playgroud)

然后它将无法正常工作.你所拥有的是一个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>
Run Code Online (Sandbox Code Playgroud)

由于JSP scriptlet位于JSP文件中,因此它现在实际上被正确处理,而是输出对象/数组的有效JSON以存储在全局范围的test变量中,然后您可以在其中引用该变量yourFile.js.


gul*_*uli 1

尝试这个 :

var test = <%=request.getAttribute("jsonstring")%>;
Run Code Online (Sandbox Code Playgroud)

否则尝试一下:

var test = eval('<%=request.getAttribute("jsonstring")%>');
Run Code Online (Sandbox Code Playgroud)