天天看點

$.Form.serialize

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 也不會對你的控件名稱做任何處理,該怎麼做完全取決于你。

繼續閱讀