【问题标题】:How to send JavaScript array to Servlet inside form tag?如何将 JavaScript 数组发送到表单标签内的 Servlet?
【发布时间】:2013-12-31 21:52:58
【问题描述】:

我已经制作了复选框代码,并在复选框上单击我正在调用函数,该函数会将传递的参数添加到 JavaScript 数组。 我在正文中使用了表单标签,在表单标签内只有复选框和一个按钮。 在按钮单击时将调用 servlet,因此我需要一些机制,该机制还将 Java Script 数组数据发送到带有复选框值的 servlet。

复选框的 onClick 我没有传递复选框值,我正在传递其他详细信息,因此需要其他函数在数组中添加数据并将其传递给 servlet。

复选框代码:

<input type="checkbox" id="demo_box_2<%= aname %><%= aval %><%=k %>" class="css-checkbox" name="configcheckbox" value="<%= aval %>" onchange="addcategory('<%= acid %>')">
<label for="demo_box_2<%= aname %><%= aval %><%=k %>" name="demo_lbl_2<%=k %>" class="css-label">&nbsp;<%= aval %></label>

JavaScript 函数:

            var acdata = [];
            function addcategory(acid)
            {
                    acdata.push(acid);
                    //alert(acid);
            }

复选框的代码在表单标签内,所以我也想将带有复选框值的 acdata[] 数组发送到 servlet,所以请帮忙?

【问题讨论】:

  • 尝试发送JSON.stringify(acdata),稍后再发送JSON.parse
  • 我必须在 servlet 中解析哪里?
  • 嗯,对 servlet 了解不多,但是在您想访问这些数组值的任何地方解析它。如果它不支持JSON.parse(据我所知,这很有可能)使用字符串操作,将'['和']'内的字符串视为逗号分隔值
  • 类似:$.getJSON("addtocart?pid=" + pId
  • 那是你的 servlet 代码吗?尝试将acDataArray = JSON.parse(data.acdata) 放入done 方法中(其中data.acdata 包含字符串化数组字符串)

标签: java javascript jsp servlets checkbox


【解决方案1】:

这是 Santosh 解释的示例代码,

在您的脚本中(已编辑),

var acdata = [];
function addcategory(acid)
{
    acdata.push(acid);
    $("#hidden_array").val(acdata);
}

在您的 html 中,

<input type="checkbox" id="demo_box_2<%= aname %><%= aval %><%=k %>" 
class="css-checkbox" 
name="configcheckbox" value="<%= aval %>" onchange="addcategory('<%= acid %>')">
<label for="demo_box_2<%= aname %><%= aval %><%=k %>" name="demo_lbl_2<%=k %>" 
class="css-label">&nbsp;<%= aval %></label>

这样在表单中再添加一个隐藏字段,

<input type="hidden" id="hidden_array" name="hiddenArray" >

因此,您可以像这样在 jsp/servlet 中获取数组值,

request.getParameterValues("hiddenArray");

PS:您可以使用字符串数组 String[] 来处理您的数据。

【讨论】:

  • 我必须将$("#hidden_array").val(acid); 代码放在函数内部还是外部?如果我把它放在外面什么时候执行?
  • 如果我要使用 String [] 那么我将不得不使用 request.getParameterValues("hiddenconfig"); 因为它会接受数组。
  • 是的,你需要在函数内部使用$("#hidden_array").val(acid);
  • 因为您只将复选框选定的值传递给函数。你的实际需求是什么?如果我理解正确,您需要将每个选定的复选框值添加到该数组中吗?如果是这样,您需要在函数之外设置 $("#hidden_array").val(acdata);
  • 是的,是的,$("#hidden_array").val(acdata); 非常棒。我使用了acid,当我使用acdata数组时,它可以工作,先生,谢谢先生。
【解决方案2】:

这是实现这一目标的一种方法,

  1. 在表单内创建一个隐藏字段,
  2. 将 Javascript 数组转换为逗号/竖线分隔的字符串,(例如 12
  3. 将隐藏字段的值设置为此字符串,(例如here
  4. 这样,当你提交表单时,隐藏字段的数据也会发送到服务器,
  5. 在服务器端,拆分字符串以将数据作为 Java 字符串数组返回。

【讨论】:

  • 我不完全理解第 2 步和第 3 步,我尝试过使用 Hidden 但我不能只传递已检查的数据,它会发送所有数据是否已检查,你也会告诉我如何在隐藏字段中添加数据并将其传递给 servlet ?
  • 我已经添加了相关的示例链接。
猜你喜欢
  • 2013-12-21
  • 2016-05-04
  • 2015-01-29
  • 1970-01-01
  • 1970-01-01
  • 2012-07-31
  • 1970-01-01
  • 2015-03-22
  • 2013-08-13
相关资源
最近更新 更多