jQuery中的序列化表单(serialize)
昨天经站内一个朋友提醒,jQuery中有序列化表单的函数,不必在获取表单内元素的 时候逐个手写(原谅我如此无知。。)
今天早晨上班时查了下,顺手做个了小demo(serializeArray()),发现确实很好用,在此记录下——因为有个小小的坑。
很简单,
页面上定义好了 form 的ID之后, 就可以直接通过 $(“#formsID”).serializeArray() 来获取这个表单内的所有表单数据。
截图如下:
控制台打印的结果:
图中高亮部分也正是我想说的地方,serializeArray() 在获取表单内元素的时候,要保证表单控件有 name 属性的,否则会被忽略。
比如,我把上图中的ID为 txt1 和 txt3 的控件的 name 属性去掉,获取到的结果是这样的:
PS
经实测,在ASP.NET中,使用了母版页的情况下,由于母版页会自动生成一个form,这个时候页面上如果再自己手动添加一个form标签包裹要serialize的控件是不能正常工作的,serializeArray 的结果依然是空
如果把 $ 的选择器改为 母版页的话(例如,我这里自动生成的formID是: ctl01,就写: $(“#ctl01“).serializeArray())才可以,但是明显这样很蹩脚,
或者可以直接使用 $(“form”).serizlizeArray() 的方式,但是这样会把ASP.NET自动生成页面状态也包含进去,不知其他还有没有更好的方法,正在研究中。。。
转载于:https://my.oschina.net/bigtree/blog/609859