接受的答案的偉大工程,如果你的表格沒有複選框或單選按鈕。由於這些組都具有相同的名稱屬性,因此您需要在對象內部創建一個數組值。因此,對於類似HTML的:
<input type="checkbox" value="1" name="the-checkbox">
<input type="checkbox" value="1" name="the-checkbox">
<input type="checkbox" value="1" name="the-checkbox">
你會得到:代碼
{the-checkbox:['1', '2', '3']}
This位很好地處理一切。
/*!
* jQuery serializeObject - v0.2 - 1/20/2010
* http://benalman.com/projects/jquery-misc-plugins/
*
* Copyright (c) 2010 "Cowboy" Ben Alman
* Dual licensed under the MIT and GPL licenses.
* http://benalman.com/about/license/
*/
// Whereas .serializeArray() serializes a form into an array, .serializeObject()
// serializes a form into an (arguably more useful) object.
(function($,undefined){
'$:nomunge'; // Used by YUI compressor.
$.fn.serializeObject = function(){
var obj = {};
$.each(this.serializeArray(), function(i,o){
var n = o.name,
v = o.value;
obj[n] = obj[n] === undefined ? v
: $.isArray(obj[n]) ? obj[n].concat(v)
: [ obj[n], v ];
});
return obj;
};
})(jQuery);
使用
$(form).serializeObject();
,如果你有複選框或單選按鈕的形式,因爲它們都具有相同的名稱屬性的這種做法是行不通的。任何想法處理(除了一堆條件和手動創建一個數組)? – Hollister 2012-09-13 03:08:08
這給出了一個錯誤:'SyntaxError:illegal character' – zygimantus 2017-04-28 07:45:02
@zygimantus在''('form')','serializeArray()'和'})''之後有一個非法(和非打印)字符。我編輯出來了。 – 0b10011 2017-08-03 21:49:03