2

谁能帮我解决我的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 做到这一点,但我不知道这些语言。欢迎任何建议或代码片段。

4

5 回答 5

1

服务器端与客户端

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

  1. 一个全新的页面 - 例如单击链接并加载新的 HTML 页面时
  2. AJAX 响应 - 异步运行并根据需要格式化,以便客户端 JavaScript 可以使用它。

但是服务器不能自己操作现有页面的 DOM。即使使用 AJAX,它也必须在客户端有一些代码(通常是 JavaScript)来操作页面。

通常,如果您进行搜索,我会推荐选项 1。这具有更简单的好处,它允许您的用户向后/向前导航或为他们的搜索添加书签(假设您进行 GET 调用而不是 POST)。查看何时使用 AJAX 何时不使用

使用 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 提到的参数。您可能希望您的响应只是纯文本或 javascript 可以放置在 DIV 中的 HTML 块,但这完全取决于您。

免责声明:我不是 AJAX 专家。其中大部分是您可以从W3 Schools 网站学到的东西

于 2014-12-04T22:14:21.890 回答
0

本方案不涉及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>

PS避免使用 jsp 脚本,而是使用 JSTL。

于 2015-04-11T23:39:59.340 回答
0

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

为此,可以将它们存储在输入字段中并提交表单,或者执行 ajax 请求。我建议您为此研究 JQuery。

于 2013-02-26T15:49:52.027 回答
0

Java scriptClient sideJSP在服务器端运行。

所以使用一些隐藏变量,比如这里

于 2013-02-26T16:05:02.423 回答
0

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

于 2013-02-26T15:48:26.240 回答