JavaScript的隐藏的输入数组(Javascript Hidden Input Array)

2019-06-25 07:08发布

是否有可能有一个隐藏的输入字段作为一个数组的值,然后有它传递给Spring MVC的控制器?

function foo(){
 var myArray = new Array();
 myArray[0] = "Hello";
 myArray[1] = "World!";
 document.getElementById("hiddenInp").value=myArray;
}

然后在控制器这样做

@RequestMapping ...
public String test(HttpServletRequest request){
String[] myArray = request.getParameter("hiddenInp");
// Assuming that the name of the hidden input field is also hiddenInp
System.out.println(myArray[0] + myArray[1]);
...
}

怎么样,如果我与一个关联数组工作? 当指数字符串,而不是INT

Answer 1:

你最好的选择是将字符串化的数组,然后分配给它。

element.value = JSON.stringify( ["Hello", "World"] );

将所得的值将是一个JSON串然后可以在服务器上解析,重新创建阵列。 这种方法适用于对象,以及如果你想有类似的东西关联数组。

我要指出的是,虽然JSON今天跨浏览器相当不错的支持,旧的浏览器可能不支持它。 你可以很容易填充工具的功能,在这些情况下:



Answer 2:

然而,你在Javascript中设置它,你必须分析它在服务器上。 这可能意味着通过分割值“”成C#数组,然后访问它,只要你想。 在表单提交发送的所有值都被作为一个字符串完全原样。

您可能需要使用http://www.w3schools.com/jsref/jsref_join.asp设置隐藏的输入值。 这是没有必要的,但 - 它似乎是不使用。加入细()​​。 但要记住,值将是服务器上的字符串,而不是一个数组是很重要的。



Answer 3:

你只能传递一个字符串作为参数,以及对输入的值。 这意味着你阵列将自动通过与接合它被转换成一个字符串“ ; ”,可以手动执行与所述.join()方法 ,太。

服务器端你那么将需要选择的分隔符拆分字符串。

如果你想送他们作为一个数组,据我所知,你将需要两个输入元素:

<input type="hidden" name="hiddenInp[]"<!-- should be more descriptive --> value="a" />
<input type="hidden" name="hiddenInp[]"<!-- the same name --> value="b" />


Answer 4:

我找到了答案通过以下链接 。

当你想分配任何JavaScript对象或数组做到这一点,如下所示:

var javascript_variable = 'object' or ['fruit1', 'fruit2', 'fruit3'];
$( '#hiden_input_element_unique_id' ).val( JSON.stringify(javascript_variable) );

表单提交后,在服务器端,我们有如下解码它:

$fruits_array = json_decode( $_POST['hiden_input_element_unique_name'] );

这样,你可以在服务器端的任何JavaScript数组,你通过JavaScript将其设置里面的表单元素,在客户端!



文章来源: Javascript Hidden Input Array