20230313_TIL
오늘 한 일(회고)
- 프로젝트 생각 정리
MVP 중간 발표
프로젝트에서 파생 될 수 있는 기술면접을 알려줄 것
오늘의 에러1
$('#form').submit(function (e) {
e.preventDefault(); // 기본 이벤트 막기
const formData = new FormData(this); // form 데이터 가져오기
console.log(formData);
const urlParams = new URLSearchParams(window.location.search); // url 주소 params를 가져옴
const doctorId = urlParams.get('doctorId');
$.ajax({
type: 'PUT', // 수정 요청
url: `/api/hospitals/edit/doctor/${doctorId}`,
data: formData, // form 데이터 전송
contentType: false, // 데이터 전송 형식 지정 안함
processData: false, // 데이터 처리 안함
success: function (response) {
alert('의사 정보가 수정되었습니다.');
// 성공적으로 수정된 경우 처리할 내용을 작성
window.location.href = 'http://localhost:3000/hospital';
// alert 이후 병원 관리페이지로 이동
},
error: function (xhr) {
alert('의사 정보 수정에 실패했습니다.');
// 수정에 실패한 경우 처리할 내용을 작성
},
});
});
contentType이 원래 설정을 안했는데 이것을 false로 넣으니 에러가 해결되었다.
contentType: false는 서버로 전송되는 데이터의 MIME 유형을 자동으로 설정하도록 jQuery에게 지시하는 것. 만약 우리가 직접 명시하면, 서버가 데이터를 이해하지 못할 수 있다. 따라서 FormData는 파일 업로드와 같은 곳에서 데이터를 전송할 때 contentType: false로 설정하는 것이 좋다!!~
processData: false는 jQuery에서 서버로 보내는 데이터를 처리하지 않도록 하는 옵션이다. 이 설정은 FormData를 사용하여 파일 업로드와 같은 데이터를 전송할 때 필요합니다. processData: true로 설정하면 jQuery는 자동으로 서버로 전송할 데이터를 처리하고 문자열로 변환한다. 이렇게 하면 FormData가 올바르게 전송되지 않을 수 있다. 따라서 FormData를 사용하여 파일 업로드와 같은 데이터를 전송할 때는 processData: false로 설정하는 것이 좋다~!!.
내일 할일
- 프로젝트 이어서 하기