设置jQuery 的 traditional参数 实际上是设置 jQuery.param 的traditional 参数,默认为false,当设置为true后,会导致多层次的对象序列化为[object object](浅序列化)
当提交的参数是数组( {selectUsers:[value,value,value]} ),如果是false的话,则提交时会是"selectUsers[]=value&selectUsers[]=value"
如果设置成true,则提交时会是"selectUsers=value&selectUsers=value"
这样后台就能用String[] ids=request.getParameterValues("selectUsers"); 获取到值。
官方文档的解释如下:
traditional
类型:Boolean
如果你想要用传统的方式来序列化数据,那么就设置为 true。
Set this to true if you wish to use the traditional style of param serialization
http://blog.csdn.net/ojackhao/article/details/24580437
param() 方法创建数组或对象的序列化表示。
http://www.w3school.com.cn/jquery/ajax_param.asp
该序列化值可在进行 AJAX 请求时在 URL 查询字符串中使用。
语法
jQuery.param(object,traditional)
object要进行序列化的数组或对象
traditional规定是否使用传统的方式浅层进行序列化(参数序列化)。
1 <html> 2 <head> 3 <script type="text/javascript" src="/jquery/jquery.js"></script> 4 <script type="text/javascript"> 5 $(document).ready(function(){ 6 personObj=new Object(); 7 personObj.firstname="Bill"; 8 personObj.lastname="Gates"; 9 personObj.age=60; 10 personObj.eyecolor="blue"; 11 $("button").click(function(){ 12 $("div").text($.param(personObj)); 13 }); 14 }); 15 </script> 16 </head> 17 <body> 18 19 20 <button>序列化对象</button> 21 <div></div> 22 </body> 23 </html>
//输出结果
firstname=Bill&lastname=Gates&age=60&eyecolor=blue
serialize() 方法通过序列化表单值,创建 URL 编码文本字符串。
http://www.w3school.com.cn/jquery/ajax_serialize.asp
您可以选择一个或多个表单元素(比如 input 及/或 文本框),或者 form 元素本身。
序列化的值可在生成 AJAX 请求时用于 URL 查询字符串中。
.serialize() 方法创建以标准 URL 编码表示的文本字符串。它的操作对象是代表表单元素集合的 jQuery 对象。
.serialize() 方法可以操作已选取个别表单元素的 jQuery 对象,比如 <input>, <textarea> 以及 <select>。不过,选择 <form> 标签本身进行序列化一般更容易些:
注释:只会将”成功的控件“序列化为字符串。如果不使用按钮来提交表单,则不对提交按钮的值序列化。如果要表单元素的值包含到序列字符串中,元素必须使用 name 属性。
1 <html> 2 <head> 3 <script type="text/javascript" src="/jquery/jquery.js"></script> 4 <script type="text/javascript"> 5 $(document).ready(function(){ 6 $("button").click(function(){ 7 $("div").text($("form").serialize()); 8 }); 9 }); 10 </script> 11 </head> 12 <body> 13 <form action=""> 14 First name: <input type="text" name="FirstName" value="Bill" /><br /> 15 Last name: <input type="text" name="LastName" value="Gates" /><br /> 16 </form> 17 18 <button>序列化表单值</button> 19 <div></div> 20 </body> 21 </html>
结果
1 1 FirstName=Bill&LastName=Gates
serializeArray() 方法通过序列化表单值来创建对象数组(名称和值)。
http://www.w3school.com.cn/jquery/ajax_serializearray.asp
您可以选择一个或多个表单元素(比如 input 及/或 textarea),或者 form 元素本身。
语法
$(selector).serializeArray()
详细说明
serializeArray() 方法序列化表单元素(类似 .serialize() 方法),返回 JSON 数据结构数据。
注意:此方法返回的是 JSON 对象而非 JSON 字符串。需要使用插件或者第三方库进行字符串化操作。
返回的 JSON 对象是由一个对象数组组成的,其中每个对象包含一个或两个名值对 —— name 参数和 value 参数(如果 value 不为空的话)。举例来说:
[ {name: 'firstname', value: 'Hello'}, {name: 'lastname', value: 'World'}, {name: 'alias'}, // 值为空 ]
.serializeArray() 方法使用了 W3C 关于 successful controls(有效控件) 的标准来检测哪些元素应当包括在内。特别说明,元素不能被禁用(禁用的元素不会被包括在内),并且元素应当有含有 name 属性。提交按钮的值也不会被序列化。文件选择元素的数据也不会被序列化。
该方法可以对已选择单独表单元素的对象进行操作,比如 <input>, <textarea>, 和 <select>。不过,更方便的方法是,直接选择 <form> 标签自身来进行序列化操作。
$("form").submit(function() { console.log($(this).serializeArray()); return false; });
上面的代码产生下面的数据结构(假设浏览器支持 console.log):
[ { name: a value: 1 }, { name: b value: 2 }, { name: c value: 3 }, { name: d value: 4 }, { name: e value: 5 } ]