[Tistory] 직렬화(Serialization)

yuzu sim's avatar
Sep 25, 2024
[Tistory] 직렬화(Serialization)

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. 내 프젝 적용 (이메일 인증 안하면 못 넘어가게)

notion image
data: $(this).serialize(), // 폼 데이터 직렬화

3-1. 직렬화 과정

  1. 폼 데이터 수집:
      • $(this)는 현재 이벤트가 발생한 폼을 가리키고 serialize() 메서드는 이 폼 내의 모든 입력 필드(예: input, select, textarea)의 값을 수집한다.
  1. 직렬화:
      • 수집된 데이터는 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
  • 이부분이 문자열로 다 변환 된다는 거군!!
notion image
 

3-2. AJAX 요청에 데이터 전송

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

Coding_study