1

我想从 textarea 获取文本并将其作为表单操作中的参数发送。

所以,我有页面 showarticle.jsp 显示所有文章的评论。首先,我在 index.jsp 上调用它,参数为 comment_ref=null(这意味着我不想第一次添加评论)

<a href="showarticle.jsp?id=${row.id}&comment_ref=null">${row.title}</a>

在 showarticle.jsp 我有一个添加新评论的表格

<form action="showarticle.jsp?id=${id_param}&comment_ref=${comment_text_aria_cur}" method="post">
  <textarea name="comment_text_aria_cur" rows="4" cols="50"></textarea>
  <input type="submit" name ="submit" value="Send">
</form>

在这里我再次调用showarticle.jsp,但在这里我想从文本区域添加文本作为参数comment_ref。

我试过了

<form action="showarticle.jsp?id=${id_param}&comment_ref="<%=request.getParameter("comment_text_aria_cur") method="post">

但仍然无法正常工作。在这种情况下,我只能看到以前的值。例如,

我写评论“aaa”并按提交-> comment_ref = null。我写评论“bbb”并按提交->comment_ref = aaa。

我确定解决方案非常简单。谢谢!

4

2 回答 2

1

首先将 method="post" 更改为 method="get"。通常,Post 不允许通过 url 发送值(但是,您仍然可以使用 javascript 实现查询字符串)。对于 post,值在请求正文中以内容类型指定的格式发送(主要是 application/x-www-form-urlencoded)。

一旦您将 post 更改为 get,当您提交表单时,这些值会自动附加到 url。您无需显式附加它。

request.getParameter 用于获取表单参数的值,即从 url 请求中获取参数值。您不能使用它来附加值。

这是一种简单的方法。

<form action="showarticle.jsp" method="GET">
     <textarea name="comment_text_aria_cur" rows="4" cols="50"></textarea>
     <input type="hidden" name ="id" value="<%= request.getParameter("id_param")%>">
     <input type="submit" name ="submit" value="Send">
</form>

确保您正在设置 id_param (request.setAttribute("id_param", value) )

于 2018-07-09T14:36:17.220 回答
1

通常,您应该将评论数据作为帖子参数传递,而不是作为查询字符串参数。因此,您的代码应如下所示:

<form action="showarticle.jsp?id=${id_param}" method="post">
  <textarea name="comment_text_aria_cur" rows="4" cols="50"></textarea>
  <input type="submit" name ="submit" value="Send">
</form>

然后,从目标页面showarticle.jsp,您应该可以调用:

<% request.getParameter("comment_text_aria_cur") %>

当然,这将返回您上次请求提交到当前页面的值。它可用于处理和/或查看先前提交的评论的值。另一方面,它应该用于格式化表单的下一个请求的操作字符串。


但是,如果您在提交表单时坚持使用某些数据更改查询字符串,则可以使用 javascript 执行以下操作:

<html>
<body>
<form name="myForm" onsubmit="submitForm();" action="showarticle.jsp" method="post">
  <input type="text" name="id" />
  <textarea name="comment_text_aria_cur" rows="4" cols="50"></textarea>
  <input type="submit" name ="submit" value="Send">
</form>

<script>
function submitForm() {
    form = document.forms["myForm"];
    form.action = form.action+"?id="+form["id"].value+"&comment_ref="+form["comment_text_aria_cur"].value;
    return true;
}
</script>
</body>
</html>

这包括:

  1. 为您的表单命名,以便您可以从 javascript 访问它
  2. 在提交表单时提供要执行的 onsubmit 方法
  3. 在 javascript 事件方法中,您可以获取参数的值并使用所需的查询字符串参数格式化新的操作字符串
  4. 将新字符串设置为表单操作
于 2018-07-09T14:46:27.240 回答