제이쿼리에서는 serialize()
나 serializeArray()
메소드로 form 내용물을 스트링이나 배열로 변환할 수 있다. 근데 아쉽게도 form 데이터를 json으로 변환하는 메소드는 없다. 이 정돈 기본 메소드로 지원할 법한데 왜 없을까.. 아무튼 찾아보니 당연하게도 관련 플러그인이 있었다.
https://plugins.jquery.com/serializeObject/
jQuery serializeObject | jQuery Plugin Registry
jQuery serializeObject by David G. Hong Convert your form data to into JSON (JavaScript Object Notation) format, so you can manipulate them easily. See Github project page for information. Versions Version Date 2.0.3 Oct 2 2013 2.0.2 Apr 22 2013 2.0.0 Jan
plugins.jquery.com
$('form').serializeObject();
같은 형식으로 사용할 수 있다.
나는 여기에 checkbox에 대해서 true/false로 표시한 값이 필요해서 아래와 같이 살짝 수정해서 사용했다.
jQuery.fn.serializeObject = function () {
let result = {};
jQuery.each(this.serializeArray(), function (i, element) {
let node = result[element.name];
if (typeof node !== 'undefined' && node !== null) {
if (jQuery.isArray(node)) {
node.push(element.value);
} else {
result[element.name] = [node, element.value];
}
} else {
result[element.name] = element.value;
}
});
jQuery.each(this.find('input[type=checkbox]'), function (i, element) {
result[element.name] = $(element).prop('checked');
});
return result;
};
요즘은 기존에 제이쿼리를 사용한 코드를 바닐라 자바스크립트로 바꾸는 공부를 하고 있어서 serializeObject 대신 URLSearchParams, FormData, Object.fromEntries 쪽을 보고 있다.
'프로그래밍 > 웹' 카테고리의 다른 글
[Node.js] 자바스크립트에서 csv 파일 생성 시 한글 깨짐 문제 해결 (0) | 2021.10.22 |
---|---|
[Node.js] 외부 프로그램 실행하고 결과 출력하기 (0) | 2021.07.30 |
[CSS] 모바일 밑으로 당겨서 새로고침 막기 (0) | 2021.07.09 |
[자작] 광운대 공지사항 RSS (2) | 2021.04.17 |
JS 패키지 비교 분석 사이트, Openbase (0) | 2021.02.07 |
[JavaScript] fetch로 form data 보내기 (5) | 2021.01.30 |
[자작] 구글 URL번역 차단해제 유저스크립트 (0) | 2020.09.19 |
웹 개발 시 헛갈리는 개념 정리, this vs that (0) | 2020.08.23 |