6.6 序列化元素
6.6 序列化元素
1.serialize()方法
做项目的过程中,表单是必不可少的,经常用来提供数据,例如注册、登录等。常规的方法是使表单提交到另一个页面,整个浏览器都会被刷新,而使用Ajax技术则能够异步地提交表单,并将服务器返回的数据显示在当前页面中。
前面在讲解$.get()和$.post()方法的时候,表单的HMTL代码如下:
[插图]
为了获取姓名和内容,必须将字段的值逐个添加到data参数中。代码如下:
[插图]
这种方式在只有少量字段的表单中,勉强还可以使用,但如果表单元素越来越复杂,使用这种方式在增大工作量的同时也使表单缺乏弹性。jQuery 为这一常用的操作提供了一个简化的方法—serialize()。与jQuery中其他方法一样,serialize()方法也是作用于一个jQuery对象,它能够将DOM元素内容序列化为字符串,用于Ajax请求。通过使用serlialize()方法,可以把刚才的jQuery代码改为如下:
[插图]
当单击“提交”按钮后,也能达到同样的效果。如图6-11所示。
[插图]
需要注意的是,$.get()
方法中data参数不仅可以使用映射方式,如以下jQuery代码:
[插图]
也可以使用字符串方式,如以下jQuery代码:
[插图]
用字符串方式时,需要注意对字符编码(中文问题),如果不希望编码带来麻烦,可以使用serialize()方法,它会自动编码。
因为serialize()方法作用于jQuery对象,所以不光只有表单能使用它,其他选择器选取的元素也都能使用它,如以下jQuery代码:
[插图]
把复选框和单选框的值序列化为字符串形式,只会将选中的值序列化。
2.serializeArray()方法
在jQuery中还有一个与serialize()类似的方法—serializeArray(),该方法不是返回字符串,而是将DOM元素序列化后,返回JSON格式的数据。jQuery代码如下:
[插图]
通过console.log()方法输出fields对象,然后在Firebug中查看该对象,如图6-12所示。
[插图]
既然是一个对象,那么就可以使用$.each()函数对数据进行迭代输出。代码如下:
[插图]
3.$.param()方法
它是serialize()方法的核心,用来对一个数组或对象按照key/value进行序列化。
比如将一个普通的对象序列化:
[插图]