更新日期:2020-12-21

我們最常用的方法是 $(form).serialize(),這個方式得到的是一個字串(String),例如: id=1&name=john&tel=0912345678

若是要變成陣列(Array),就可以改用 $(form).serializeArray() 這個方法,結果如下:

[
  {name: "aa", value: "100"},
  {name: "bb", value: "good"},
  {name: "cc", value: "123"}
]

但看到這樣子name,value組合,若是要直接運用也是很麻煩,因此若能轉化成物件(Object)也是比較方便的,但可惜的是 jQuery 裡面並沒有這個函數可運用。

不過,我們可以自己延伸 serializeArray 寫一段小程式 serializeObject 來用,程式碼如下:

$.fn.serializeObject = function() {
    var obj = {};
    console.log(this.serializeArray());
    $.each( this.serializeArray() , function() {
        if (obj[this.name] !== undefined) {
            if (!obj[this.name].push) {
                obj[this.name] = [obj[this.name]];
            }
            obj[this.name].push(this.value || '');
        } else {
            obj[this.name] = this.value || '';
        }
    });
    return obj;
};