serialize

serialize(formElement[, getHash = false]) -> String | object

串行化表单数据为字符串,以适用于 Ajax 请求(默认行为)。若指定可选的参数 getHash 值为 true,则返回一个 Hash 对象,以表单控件的名称(name 属性)为“键”,控件所代表的数据为“值”。

根据可选参数 getHash 的值是否等价于 true,返回的结果为一个形如 {name: "johnny", color: "blue"} 的对象或是一个形如 "name=johnny&color=blue" 的字符串。返回值常用于作为 Ajax 请求的参数。该方法模拟浏览器原生的串行化表单方式,以便在不刷新页面的情况下发送表单数据到服务器。

从 Prototype 1.5 开始,Ajax 请求的参数推荐使用 Hash 对象。这意味着你需要将参数 getHash 设置为 true。保留过去的做法(串行化为字符串)是为了保持后向兼容性。

样例

$('person-example').serialize() 
// -> 'username=sulien&age=22&hobbies=coding&hobbies=hiking'
$('person-example').serialize(true) 
// -> {username: 'sulien', age: '22', hobbies: ['coding', 'hiking']}

试一下!

User info

注意

表单中被禁用的元素不会被串行化(遵循 W3C HTML 建议)。另外,文件上传控件也会被忽略,因为它们不是仅通过 JavaScript 就可以进行串行化和发送的。

注意:"hobbies" 是一个多选的 SELECT 控件,如果我们要把这个控件的值传递到一个 PHP 或 ROR(Ruby on Rails)后端,该控件必须命名为 "hobbies[]",因为我们希望发送的是一个 array,而不是单个值。这与 JavaScript 没有关系——Prototype 也不会对你的控件名称做任何处理,该怎么做完全取决于你。