在jquery中字符串序列化方法包括有param() 、serialize() 、serializeArray(),在这里对其常用做法进行总结。
- $.param()方法
这是serialize()方法的核心,用来对一个数组或对象按照key/value进行序列化。
常用方法:
1 直接传递一个obj,直接转化成key=value然后用&连接起来了 2 $.param({name:'bill',age:18}); 3 结果:name=bill&age=18 4 这里的{X:Y,A:B}会变成X=Y&A=B的格式 5 6 或者name value键值对组成的数组,这个好说,name=value然后用&拼起来 7 $.param([ 8 {name:'name',value:'bill'}, 9 {name:'age',value:18} 10 ]); 11 结果:name=bill&age=18 12 这里的name:'name'两个name是不同的,name value是固定格式 13 这里的{name:XXX,value:YYY} 会变成XXX=YYY的格式,比起上面的写法,显得更啰嗦 14 15 当name出现相同的时候 16 $.param([ 17 {name:'name',value:'bill'}, 18 {name:'name',value:'tom'} 19 ]); 20 结果:name=bill&name=tom 21 这样的话,有些后端语言是取不到两个name的 22 23 但如果这样呢? 24 $.param([ 25 { 26 name:'name', 27 value:['bill','tom'] 28 } 29 ]); 30 结果:name=tom,bill 31 居然用逗号把value接起来了,好吧,后端分割开也行 32 33 34 用传递一个obj的方法呢? 35 $.param({ 36 name:['bill','tom'], 37 age:[18,19], 38 sex:["male","female"] 39 }); 40 结果:name[]=bill&name[]=tom&age[]=18&age[]=19&sex[]=male&sex[]=female 41 name,age,sex被自动加上中括号了, 42 对于php来说,$_REQUEST['name'],$_REQUEST['age'],$_REQUEST['sex']都是array了 43 对应好下角标,3个person的信息就传递过来了 44 45 换成第二种固定格式: 46 $.param([ 47 {name:'name',value:['bill','tom']}, 48 {name:"age",value:[18,19]}, 49 {name:"sex",value:["male","female"]} 50 ]) 51 结果:name=bill,tom&age=18,19&sex=male,female