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']}
试一下!
注意
表单中被禁用的元素不会被串行化(遵循 W3C HTML 建议)。另外,文件上传控件也会被忽略,因为它们不是仅通过 JavaScript 就可以进行串行化和发送的。
注意:"hobbies" 是一个多选的 SELECT
控件,如果我们要把这个控件的值传递到一个 PHP 或 ROR(Ruby on
Rails)后端,该控件必须命名为 "hobbies[]",因为我们希望发送的是一个 array,而不是单个值。这与 JavaScript
没有关系——Prototype 也不会对你的控件名称做任何处理,该怎么做完全取决于你。