在jsp字符串变量中存储java脚本值

在jsp字符串变量中存储java脚本值,java,javascript,jquery,ajax,jsp,Java,Javascript,Jquery,Ajax,Jsp,有人能帮我解决jsp代码的简单问题吗? 这是我的带有JavaScript的jsp页面 function fid() { var id=document.getElementById("id").value; alert(id); <% String demo=id; // store id value of java script but not working or find(id);

有人能帮我解决jsp代码的简单问题吗? 这是我的带有JavaScript的jsp页面

function fid()
{
    var id=document.getElementById("id").value;
    alert(id);
    <%
             String demo=id;             // store id value of java script but not working
             or find(id);                // or call a function with parameter of java script var value
                                       // both are not working
     %>
}
函数fid()
{
var id=document.getElementById(“id”).value;
警报(id);
}
这是我的html页面--

输入Student IdFind
如何在jsp函数中传递js值。

我知道我可以用ajax或jquery实现这一点,但我不懂这些语言。欢迎提供任何建议或代码片段。

Java脚本在客户机上运行,JSP在服务器上运行。如果您希望JS变量进入服务器,从而可以从JSP访问,那么您必须使用类似于
var url='myJSP.JSP/?id='+id
的东西将其作为请求参数发送到JSP,并且在JSP中,您可以使用
request.getParameter(“id”)

从客户端检索javascript值,您的scriptlet正在服务器端运行。因此,如果您想在scriptlet中使用javascript变量,则需要提交它们


要实现这一点,可以将它们存储在输入字段中并提交表单,也可以执行ajax请求。我建议您查看JQuery以了解这一点。

Java脚本
客户端
,而
JSP
在服务器端运行

因此,使用一些隐藏变量,如服务器端和客户端 为了允许服务器响应用户输入,必须发送请求。您可以要求服务器通过以下两种方式之一发送响应:

  • 一个全新的页面-例如当点击链接并加载新的HTML页面时
  • AJAX响应—异步运行,并按需要格式化,以便客户端JavaScript可以使用它
  • 但是服务器无法单独操作现有页面的DOM。即使使用AJAX,客户端也必须有一些代码(通常是JavaScript)来操作页面

    通常,如果您正在进行搜索,我会推荐选项1。这样做的好处是更简单,并且允许您的用户向后/向前导航或为其搜索添加书签(假设您拨打GET电话而不是POST)。看

    使用AJAX 如果您想使用AJAX,请调用您的服务器创建xmlhttp对象,然后您可以只使用AJAX传递变量@A4L。它看起来像这样:

    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        // Do what you want with the results from your server
        document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
        }
      }
    var xmlhttp = new XMLHttpRequest();
    
    xmlhttp.open("GET",'myJSP.jsp/?id=' + id,true);
    xmlhttp.send();
    
    然后您的服务器可以拉入前面提到的@A4L这样的参数。您可能希望您的响应只是纯文本或HTML块,javascript可以将其放在DIV中,但这取决于您自己


    免责声明:我不是AJAX专家。这其中大部分是您可以从本解决方案中学习到的,本解决方案不涉及js。正如您所说,您的js和jsp scriplet位于同一个jsp上。请尝试以下方法:

    <%
    //find form was submit, if cmd is not null
    if(null != request.getParameter("cmd")) {
       String id = request.getParameter("id");
       //your logic to find
    }
    %>
    
    <form action='same.jsp'>
       Enter Student Id: <input type='text' id='id' value='${param.id}'/><!-- ${param.id} to restore the previously entered value by user -->
       <button name='cmd'>Find</button><!-- removed onclick, added name -->
    </form>
    
    
    输入学生Id:
    发现
    

    p.S.避免使用jsp scriplets,而是使用JSTL。

    我使用了这段代码。但我确实工作正常。是否需要更改以使用它-window.location.replace(“hello.jsp?id=“+id”);然后输入jsp代码-System.out.println(request.getParameter(“id”);在url中传递值。但打印是“空的”。这段代码对我有帮助吗?我也想告诉你们。我得把它印在某一页上。下一页我做不到。所以不要告诉我下一页的值。这就是为什么我不习惯使用js、ajax和jquery。我知道我可以在下一页上得到值。首先,你不能从JavaScript调用scriptlet函数,你需要将它提交到一个servlet或另一个JSP页面并在那里进行处理,这就是它的工作原理。请解释你真正的问题是什么。顺便说一句,你听起来像是医生,有些东西很痛,请告诉我我有什么。@VijayKumarKhushlani你能告诉我你想要实现什么吗?似乎您想使用scriptlet在同一页上创建一些东西,如果您很少给出您想要实现的东西,那么只有一些能够提供解决方案。兄弟,我需要在某一页上这样做。请给我一个电话,嗯。你能给我JQuery代码吗。请告诉我如何使用该代码。我只是习惯于我的工作。不知道它是怎么工作的。就像我说的,兄弟,我需要在同一页上。给我ajax或JQuery代码
    <%
    //find form was submit, if cmd is not null
    if(null != request.getParameter("cmd")) {
       String id = request.getParameter("id");
       //your logic to find
    }
    %>
    
    <form action='same.jsp'>
       Enter Student Id: <input type='text' id='id' value='${param.id}'/><!-- ${param.id} to restore the previously entered value by user -->
       <button name='cmd'>Find</button><!-- removed onclick, added name -->
    </form>