http://www.123-cha.com/prototype/api/form/serialize.htm
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 Username: Age: Your hobbies are: coding
swimming
hiking
drawing
注意
表單中被禁用的元素不會被串行化(遵循 W3C HTML 建議)。另外,檔案上傳控件也會被忽略,因為它們不是僅通過 JavaScript 就可以進行串行化和發送的。
注意:"hobbies" 是一個多選的
SELECT
控件,如果我們要把這個控件的值傳遞到一個 PHP 或 ROR(Ruby on Rails)後端,該控件必須命名為 "hobbies[]",因為我們希望發送的是一個 array,而不是單個值。這與 JavaScript 沒有關系——Prototype 也不會對你的控件名稱做任何處理,該怎麼做完全取決于你。