시스템아 미안해

ajax formData보내기 (Illegal invocation) 본문

web/javascript

ajax formData보내기 (Illegal invocation)

if else 2022. 12. 14. 09:13

1. dataType : success function 에 전달될 argument 의 형태를 지정하는데 사용.

 

2. file 전송을 위해 ajax에 contentType: false, processData: false 옵션을 추가한다.

 

2-1. processData : false > DOM documnet 또는 기타 처리되지 않은 파일을 보낼때 false로 지정한다.

(일반적으로 서버에 전달되는 query string 형태 방지) 

 

2-2. contentType : false >  "multipart/form-data"로 전송되게 할때 false로 지정한다. 

 

	
    function saveBoard() {

		var form = $("#dataForm")[0];
        
        //FormData : js에서 지원, <form> 과 같은 효과를 가져다주는 key/value 가 저장되는 객체
		var formData = new FormData(form);
		
		//1. form객체에 파일담기
		for (var x = 0; x < fileArr.length; x++) {
			// 삭제 안한것만 담아 준다. 
			if (!fileArr[x].is_delete) {
				formData.append("fileList", fileArr[x]);
			}
		}
		
		//2. 제목, 내용 빈 값 체크
		let strSubject = $("#strSubject").val();
		let strContent = $("#strContent").val();
		
		if(strSubject == ""){
			alert("제목을 입력해주세요");
			$("#strSubject").val("");
			return;
		}
		if(strContent == ""){
			alert("내용을 입력해주세요");
			$("#strContent").val("");
			return;
		}
		
		//3. 회람인 담기
		let emp_arr = new Array();
		
		$("input[name=emp_seq]:checked").each(function(){
			
			emp_arr.push($(this).val());
		});		
		
		formData.append("emp_arr",emp_arr);
		
		//4. 회람여부 담기
		let strCirculYn = "";
	
		if(emp_arr.length > 0){
			strCirculYn = "Y";
		}else{
			strCirculYn = "N";
		}
    
    
    	$.ajax({
        
			method : "POST",
			url : "../boards/insertBoard",
			data : formData,
			contentType : false,
			processData: false,
			dataType : 'json',
			success : function(res) {
				
				alert("등록을 완료하였습니다.");
				/* parent.$.fancybox.close('true'); */
			},
			error : function() {
				alert("에러가 발생하였습니다.");
				return;
			}
       })
 }