jQuery ajax - serializeArray() 메서드
예제
표单 값의 시리얼라이즈된 배열 형태로 출력합니다:
$("button").click(function(){ x=$("form").serializeArray(); $.each(x, function(i, field){ $("#results").append(field.name + ":" + field.value + " "); ); );
정의와 사용법
serializeArray() 메서드는 표单 값을 시리얼라이즈하여 객체 배열(이름과 값)을 생성합니다.
표单 요소(예: input 및/또는 textarea) 또는 표单 자체를 선택할 수 있습니다.
문법
$(선택자).serializeArray()
상세 설명
serializeArray() 메서드는 표单 요소를 시리얼라이즈합니다(예: .serialize() 메서드),JSON 데이터 구조 데이터를 반환합니다.
주의:이 메서드는 JSON 객체를 반환합니다. JSON 문자열화 작업을 수행하려면 플러그인이나 제3자 라이브러리를 사용해야 합니다.
반환하는 JSON 객체는 이름과 값(값이 비어 있지 않을 경우)을 포함하는 객체 배열로 구성되어 있습니다. 예를 들어:
[ {name: 'firstname', value: 'Hello'}, {name: 'lastname', value: 'World'}, {name: 'alias'}, // 값이 비어 있습니다 ]
.serializeArray() 메서드는 W3C에 관한 성공된 컨트롤의 표준을 사용하여 포함되어야 할 요소를 검사합니다. 특히, 요소는 비활성화되지 않아야 하며(비활성화된 요소는 포함되지 않습니다) name 속성을 가지고 있어야 합니다. 제출 버튼의 값도 시리얼라이즈되지 않습니다. 파일 선택 요소의 데이터도 시리얼라이즈되지 않습니다.
이 메서드는 선택된 단일 표单 요소 객체를 처리하는 데 사용됩니다. 예를 들어 <input>, <textarea>, 및 <select>입니다. 그러나, 더 편리한 방법은 직접 <form> 태그 자체를 선택하여 시리얼라이즈 작업을 수행하는 것입니다.
$("form").submit(function() { console.log($(this).serializeArray()); return false; );
위의 코드는 다음과 같은 데이터 구조를 생성합니다(브라우저가 console.log를 지원하는 경우):
[ { name: a value: 1 }, { name: b value: 2 }, { name: c value: 3 }, { name: d value: 4 }, { name: e value: 5 } ]
예제
폼 내용을 가져와 웹 페이지에 삽입합니다:
HTML 코드:
<p id="results"><b>결과:</b> </p> <form> <select name="single"> <option>Single</option> <option>Single2</option> </select> <select name="multiple" multiple="multiple"> <option selected="selected">Multiple</option> <option>Multiple2</option> <option selected="selected">Multiple3</option> </select><br/> <input type="checkbox" name="check" value="check1"/> check1 <input type="checkbox" name="check" value="check2" checked="checked"/> check2 <input type="radio" name="radio" value="radio1" checked="checked"/> radio1 <input type="radio" name="radio" value="radio2"/> radio2 </form>
jQuery 코드:
var fields = $("select, :radio").serializeArray();; jQuery.each( fields, function(i, field){ $("#results").append(field.value + " "); );