首页 > 代码库 > jquery字符串序列化方法总结

jquery字符串序列化方法总结

  在jquery中字符串序列化方法包括有param() 、serialize() 、serializeArray(),在这里对其常用做法进行总结。

  1. $.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

     

jquery字符串序列化方法总结