$.fn.serializeObject = function() {
        var o = {};
        var a = this.serializeArray();
        $.each(a, function() {
            if ( o[this.name] ) {
                if ( !o[this.name].push ) {
                    o[this.name] = [o[this.name]];
                }
                o[this.name].push(this.value || '');
            } else {
                o[this.name] = this.value || '';
            }
        });
        return o;
    };
posted by 뚱2
jQuery의 serializeArray를 이용한다.


<form id="listForm" name="listForm">
    <input name="test_01" value="1" type="hidden">
    <input name="test_02" value="2" type="hidden">
    <input name="test_03" value="3" type="hidden">
</form>

위의 폼을 var arr = $("#listForm").serializeArray()를 호출하면
// 아래와 같은 arr의 형태로 생성된다.
arr = [
    {name : 'test_01', value : '1'}
   ,{name : 'test_02', value : '2'}
   ,{name : 'test_03', value : '3'}
];

그래서 위의 serializeArray 메소드를 이용해서 json형태로 만들어준다.
/**
 * jqGrid
 * desc   : form의 데이터를 json 형태로 변환해 준다.
 * return : 성공시에는 객체(JSON)을 리턴한다. 실패시에는 null을 리턴한다.
 */
jQuery.fn.serializeObject = function() {
  var obj = null;
  try {
    if ( this[0].tagName && this[0].tagName.toUpperCase() == "FORM" ) {
      var arr = this.serializeArray();
      if ( arr ) {
        obj = {};
        jQuery.each(arr, function() {
          obj[this.name] = this.value;
        });				
      }//if ( arr ) {
 		}
  }
  catch(e) {alert(e.message);}
  finally  {}
  
  return obj;
};



posted by 뚱2