반응형
제이쿼리에서는 serialize()
나 serializeArray()
메소드로 form 내용물을 스트링이나 배열로 변환할 수 있다. 근데 아쉽게도 form 데이터를 json으로 변환하는 메소드는 없다. 이 정돈 기본 메소드로 지원할 법한데 왜 없을까.. 아무튼 찾아보니 당연하게도 관련 플러그인이 있었다.
https://plugins.jquery.com/serializeObject/
$('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 |