![[Tistory] 직렬화(Serialization)](https://image.inblog.dev?url=https%3A%2F%2Finblog.ai%2Fapi%2Fog%3Ftitle%3D%255BTistory%255D%2520%25EC%25A7%2581%25EB%25A0%25AC%25ED%2599%2594%28Serialization%29%26logoUrl%3Dhttps%253A%252F%252Finblog.ai%252Finblog_logo.png%26blogTitle%3DCoding_study&w=2048&q=75)
1. 직렬화(Serialization)
데이터를 저장하거나 전송하기 위해 특정 형식으로 변환하는 과정을 의미한다.
JavaScript에서는 주로 다음과 같은 두 가지 용도로 사용된다.
데이터 전송: 서버와의 통신 시, 객체나 배열 등의 데이터를 JSON 문자열로 변환하여 전송한다.
예를 들어, AJAX 요청에서 데이터를 전송할 때, 직렬화를 통해 JavaScript 객체를 문자열 형식으로 변환한다.
데이터 저장: 데이터를 파일 시스템이나 데이터베이스에 저장하기 위해 특정 형식으로 변환한다.
이 경우에도 객체를 JSON이나 XML 형식으로 변환하여 저장할 수 있다.
2. serialize()의 경우
jQuery의 serialize() 메서드는 HTML 폼의 데이터를 URL 인코딩된 문자열로 직렬화한다.
예를 들어, 폼에 다음과 같은 입력 필드가 있다고 가정해본다.
<form id="myForm"> <input type="text" name="username" value="user123"> <input type="email" name="email" value="user@example.com"> <input type="password" name="password" value="secret"> </form>
$('#myForm').serialize()
를 호출하면 다음과 같은 문자열이 생성된다.username=user123&email=user%40example.com&password=secret
이렇게 직렬화된 문자열은 AJAX 요청에서
data
필드로 전송하여 서버에서 쉽게 처리할 수 있도록 한다.3. 내 프젝 적용 (이메일 인증 안하면 못 넘어가게)

data: $(this).serialize(), // 폼 데이터 직렬화
3-1. 직렬화 과정
- 폼 데이터 수집:
$(this)
는 현재 이벤트가 발생한 폼을 가리키고serialize()
메서드는 이 폼 내의 모든 입력 필드(예:input
,select
,textarea
)의 값을 수집한다.
- 직렬화:
- 수집된 데이터는 URL 인코딩 형식의 문자열로 변환함. 예를 들어, 다음과 같은 입력 필드가 있다고 가정해보자
<input type="text" name="username" value="user123"> <input type="email" name="email" value="example@example.com"> <input type="hidden" name="isEmailConfirmed" value="true"> <div class="email-box d-flex"> <input class="my_auth_form_box_input" id="email" type="email" name="email" placeholder="이메일" maxlength="60" value="compilemate@gmail.com" required/> <button class="btn btn-outline-info btn-sm" type="button" id="emailAuthButton">인증하기</button> </div>
serialize()
를 호출하면 다음과 같은 문자열로 변환된다.
username=user123&email=compilemate%40gmail.com&isEmailConfirmed=true
- 이부분이 문자열로 다 변환 된다는 거군!!

3-2. AJAX 요청에 데이터 전송
- 이렇게 직렬화된 데이터는 AJAX 요청의
data
속성에 사용되어 서버로 전송됨
- . 서버는 이 데이터를 파싱하여 필요한 정보를 처리
$(this).serialize()
를 사용하면 인증번호를 포함한 모든 폼 데이터가 직렬화되어 서버로 전송되므로, 해당 로직이 잘 작동한다.
Share article