如何在 javascript 中访问 servlet 变量

Posted

技术标签:

【中文标题】如何在 javascript 中访问 servlet 变量【英文标题】:How to access a servlet variable inside javascript 【发布时间】:2014-02-22 19:26:29 【问题描述】:

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

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

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

var test = '<%=request.getAttribute("jsonstring")%>'

请指导我。谢谢。

【问题讨论】:

【参考方案1】:

如果 JSP 文件使用 &lt;script&gt; 标记来加载外部 javascript 文件,如下所示:

<script type="text/javascript" src="js/yourFile.js"></script>

那么它就不起作用了。你所拥有的是一个 JSP scriptlet,它只在 JSP 文件的执行过程中有意义。 yourFile.js 文件不会在服务器端解析,因为它不需要解析。只有浏览器会知道如何处理 &lt;script&gt; 标记并向服务器发出请求以加载 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 变量中,然后您可以在 @987654327 中引用它@。

【讨论】:

你说得对,我错过了他试图在 JS 文件中这样做:) 我建议避免使用小脚本。而是使用$jsonstring @Anthony ..我从几个小时开始尝试使用外部 JS 文件。它现在可以工作了。感谢您提供如此好的解释。:)【参考方案2】:

试试这个:

var test = <%=request.getAttribute("jsonstring")%>;

其他尝试:

var test = eval('<%=request.getAttribute("jsonstring")%>');

【讨论】:

你能提供错误吗?你能提供 的值吗? Uncaught SyntaxError: Unexpected token 【参考方案3】:

像这样将对象直接放入请求中

request.setAttribute("jsonstring", obj);

然后将请求obj分配给js变量,它将作为json对象访问;

var test = <%=request.getAttribute("jsonstring")%>;
... = test.parameter;

【讨论】:

【参考方案4】:

我的解决方案如下:

<script type="text/javascript">
    var value =<%=request.getAttribute("indicadorId") %>;
</script>

【讨论】:

以上是关于如何在 javascript 中访问 servlet 变量的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JavaScript 中访问 Chrome 拼写检查建议

如何在javascript中访问当前范围之外的变量?

在 JavaScript 中如何访问 session?

与jdbc连接时servlet没有响应

如何在 javascript 中访问 servlet 变量

如何在 JavaScript 中访问 Grails 变量?