【问题标题】:How to access a servlet variable inside javascript如何在 javascript 中访问 servlet 变量
【发布时间】: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")%>'

请指导我。谢谢。

【问题讨论】:

    标签: java javascript jsp servlets


    【解决方案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>
      

      【讨论】:

        猜你喜欢
        • 2021-08-23
        • 2012-01-01
        • 2011-09-21
        • 1970-01-01
        相关资源
        最近更新 更多