1 분 소요

오늘 한 일(회고)

  • 프로젝트 생각 정리

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로 설정하는 것이 좋다~!!.

내일 할일

  • 프로젝트 이어서 하기

참고자료