jQueryajax中serialize()⽅法增加其他参数
表单提交
使⽤jQuery.ajax()进⾏表单提交时,需要传递参数,最直接的⽅法便是使⽤Form的serializa()将表单序列化,前提只是将Form表单中的name 属性与数据库的字段名保持⼀致便可;但如果遇到再次往其中增加参数的状况呢,我们该如何处理?
First:
其实,jQuery ajax的serialize() ⽅法是将表单序列化为键值对(key1=value1&key2=value2…)后提交,使⽤标准的 URL-encoded 编码表⽰⽂本字符串,⽽jQuery ajax-param()⽅法也是将其序列化⼀个key/value对象,如:
var params = { width:1900, height:1200 };
var str = jQuery.param(params);
$("#results").text(str);
jquery实现ajax结果为:
width=1680&height=1050
恰好两者转换的形式⼀样,于是在serialize()中想要增加其他参数的时候,就可以:
jQuery.post(url, $.param({aa:'aa1',bb:'bb'})+'&'+jQuery('#fm').serialize(), function (result) {
...
}
于是传到后台的参数中,除过form表单中的含有name属性的字段外,就额外增加了aa以及bb两个参数,我们的问题也便迎刃⽽解了!
Second:
还有另外⼀种解决⽅法就是,将需要增加的参数写在表单隐藏域中,这样是需要使⽤Form.serialize()⽅法,即可将其余参数增加进去。