将javascript值存储在jsp String变量中

时间:2013-02-26 15:41:34

标签: 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);                // or call a function with parameter of java script var value
                                       // both are not working
     %>
}

这是我的html页面 -

Enter Student Id<input type='text' id='id'><button type='button' onclick='fid()'>Find</button>

如何在jsp函数中传递js值 我知道我可以用ajax或jquery做到这一点,但我不知道这些语言。欢迎任何建议或代码片段。

5 个答案:

答案 0 :(得分:1)

服务器端与客户端

为了让您的服务器响应用户输入,必须发送请求。您可以要求服务器发送以两种方式之一发送响应:

  1. 一个全新的页面 - 例如点击链接并加载新的HTML页面
  2. AJAX响应 - 以您想要的方式异步运行并格式化,以便客户端JavaScript可以使用它。
  3. 但是服务器本身无法操纵现有页面的DOM。即使使用AJAX,它也必须在客户端有一些代码(通常是JavaScript)来操作页面。

    通常情况下,如果您正在进行搜索,我会建议选项1.这样做的好处是更简单,它允许您的用户向后/向前导航或为搜索添加书签(假设您进行GET调用与POST)。见When to Use AJAX and When Not To

    使用AJAX

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

    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中提到的参数。您可能希望将您的回复设置为直接文本或javascript可以放在DIV中的HTML块,但这完全取决于您。

    免责声明:我不是AJAX的专家。您可以从W3 Schools site

    中学到大部分内容

答案 1 :(得分:0)

Java脚本在客户端上运行,JSP在服务器上运行。如果你希望你的JS变量来到服务器,因此可以从JSP访问,而不是像var url = 'myJSP.jsp/?id=' + id那样将它作为请求参数发送到JSP,你可以使用{{{ 1}}

答案 2 :(得分:0)

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

要实现此目的,请将它们存储在输入字段中并提交表单,或执行ajax请求。我建议你研究一下JQuery。

答案 3 :(得分:0)

Java scriptClient sideJSP在服务器端运行。

因此请使用一些隐藏变量,例如here

答案 4 :(得分:0)

此解决方案不涉及js。正如你所说,你的js和jsp scriptlet在同一个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>

P.S。避免使用jsp scriptlet,而是使用JSTL。