Javascript隐藏输入数组

szr*_*zvi 5 javascript arrays hidden input

是否可以将隐藏输入字段的值作为数组,然后将其传递给Spring MVC控制器?

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

然后在控制器中做类似的事情

@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]);
...
}
Run Code Online (Sandbox Code Playgroud)

如果我使用关联数组怎么样?索引是字符串而不是int

Sam*_*son 13

您最好的选择是对数组进行字符串化然后分配它.

element.value = JSON.stringify( ["Hello", "World"] );
Run Code Online (Sandbox Code Playgroud)

结果值将是一个JSON字符串,然后可以在服务器上解析,重新创建数组.如果您希望有类似关联数组的东西,这种方法也适用于对象.

我应该注意到,虽然JSON今天浏览器有相当好的支持,但旧版浏览器可能不支持它.在这些情况下,您可以非常轻松地填充该功能:

  • @ianpgall - 是`.join()`真的_extra_处理了吗?如果你设置的值已经是一个字符串JS不必转换它,所以它不像它处理它两次.当然,`.join()`可以让你明确控制连接字符. (2认同)