如何在 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 文件使用 <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
变量中,然后您可以在 @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 变量的主要内容,如果未能解决你的问题,请参考以下文章