【问题标题】:How to use script variable in scriplet如何在scriptlet中使用脚本变量
【发布时间】:2013-11-19 05:36:21
【问题描述】:

谁能帮我从 name 变量中获取值并将其存储在 name_val 中?

 <%@page contentType="text/html" pageEncoding="UTF-8"%>
 <!DOCTYPE html>
 <html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>

     <script type="text/javascript">
       function dropdelete(ev)
        {
            var name=document.getElementById("user"+stringToArray[1]).value;
        }
   <% String name_val ; %>
    </script>
</head>
<body>
</html>

【问题讨论】:

  • 这个问题是如何获得 3 票赞成的,这有点令人难以置信。它对不知道他们的工具如何工作的网络程序员的数量产生了令人不安的影响。
  • 哈哈..问这个问题的人可能很幸运。为这类问题获得越来越多的赞成票

标签: java javascript jsp


【解决方案1】:

javascript是客户端,jsp是服务器端。所以你不能这样存储

String name_val =document.getElementById("user"+stringToArray[1]).value;

按以下方式尝试ajax

var name=document.getElementById("user"+stringToArray[1]).value;
$.ajax(
               {
                   type: "POST",
                   url: "store.jsp", //Your full URL goes here
                   data: { name: name},
                   success: function(data, textStatus, jqXHR){
                       alert(data);                  
                   },
                   error: function(jqXHR){
                       alert(jqXHR.responseStatus);
                   }
               });

现在在 store.jsp 中

<%String name_val =request.getparameter("name");%>

【讨论】:

    【解决方案2】:

    你不能那样做。这没有任何意义。您的name_val 声明在您的服务器端JSP 脚本中。它在生成页面并发送到客户端时在服务器上执行。这发生在客户端在您的页面上执行 Javascript 很久之前,并且独立于客户端执行。

    当页面发送到客户端时,您的 JSP 代码已经运行并完成。这就是 JSP 的工作原理。

    您将不得不重新考虑您的设计。您可以将相关逻辑移动到客户端 Javascript 中,或将数据提交回服务器进行处理(AJAX 样式或在新请求中,例如通过表单或重定向中的 GET 参数),或其他东西,但无论如何,您得另寻出路。

    【讨论】:

      【解决方案3】:

      您无法获取 JavaScript 值并将其存储到 Java 变量中,因为 JavaScript 在客户端执行,而 Java 变量在服务器端执行。在这种情况下,服务器端先执行,然后是客户端

      或者,您可以使用表单将值存储在隐藏字段中,并通过表单提交来使用。

      <input type="hidden" id="hiddenField"/>
      

      Javascript

      document.getElementById("hiddenField").value=xxx;
      

      【讨论】:

        【解决方案4】:

        您不能直接获取它,但是当然,如​​果该值是由服务器端预先填充的,并且您要将 name_val 的值存储在隐藏字段或其他 DOM 元素中,那么您可以使用 javscript 或 jquery访问它。

        <input type="hidden" id="nameValue" value=${nameValue}>
        

        然后以

        的身份访问它
        document.getElementById("nameValue").value;
        

        更新

        为了给我的答案添加一些上下文,我假设上面的 JSP 是从一个控制 servlet 调用(重定向)的。

        这个servlet可以设置一个发送到JSP页面的请求参数

        JSP 页面可以读取请求参数并将其存储在隐藏字段中

        页面加载完成后,Javascript 或 Jquery 可以从隐藏字段中读取值并使用它。

        我猜这就是OP想要做的,即使用该值,而不仅仅是将其存储在变量中。

        【讨论】:

        • @Downvoter - 不要害怕 - 告诉我原因,然后我会为这个网站增加价值。
        • 您实际上有 5 个反对票,主要是因为您的回答没有多大意义,因为我不确定是否适合发表评论。 OP 将您的答案标记为正确这一事实表明,你们两个可能正在使用代码进行交流,或者可能共享一种心理联系。我无法解释它,但它是非常暮光之城。
        • 我相信 OP 试图走另一条路; name_val = name,其中name 是用户在页面元素中动态输入的内容,而不是静态内容。您的回答是否意味着建议一种 AJAX 风格的方法,其中动态客户端内容在后台由当前页面发送到服务器以进行进一步处理?如果是这样,javaBeginner 的回答是对该技术的清晰解释的一个很好的例子。
        • 嗯,如果 OP 真的想去另一个,那么它确实表明对事情的流程缺乏了解。我的回答不是建议任何关于 OP 将如何使用该值的方式。也许是 Ajax,也许是进一步的 DOM 处理,也许是修改值并将其 POST 到一个 servlet——问题中没有这个,谁知道呢?
        • 你的推理是有道理的,我已经删除了我的特别反对票。
        猜你喜欢
        • 2023-03-27
        • 2015-02-15
        • 2018-07-09
        • 1970-01-01
        • 2011-11-02
        • 2010-09-07
        • 1970-01-01
        相关资源
        最近更新 更多