programing

jQuery AJAX 'multipart/form-data' 데이터를 보내지 않습니까?

topblog 2023. 9. 25. 22:11
반응형

jQuery AJAX 'multipart/form-data' 데이터를 보내지 않습니까?

AJAX 개체가 올바르게 구성되어 있고 올바른 Content-Type/MIME-Type 헤더가 전송되고 있는 것으로 보아 jQuery가 업로드 데이터를 전달하지 못하는 이유에 대해 난감합니다.

리터럴 내에 포함된 FormData 객체가 있는 요청과 FormData 객체를 직접 전달하는 요청의 두 가지 형태를 시도했습니다.

안타깝게도 어떤 방법으로도 전달할 수 없으며 $_FILES와 $_POST 모두 빈 배열입니다.

제가 사용하고 싶은 이상적인 요청은 다음과 같습니다.

enter image description here

다음 코드와 함께:

var files = new FormData();

$.each(context.prototype.fileData, function(i, obj) { files.append(i, obj.value.files[0]); });

var request = { action: 'upload', id: response.obj.id, data: files };

$.ajax({

    type        : 'POST',
    url         : context.controller,
    data        : request,
    processData : false,
    contentType : 'multipart/form-data',
    mimeType    : 'multipart/form-data',

    success     : function(r) {
        console.log(r);
        //if (errors != null) { } else context.close();

    },

    error       : function(r) { alert('jQuery Error'); }

});

$_FILES와 $_POST를 모두 내보내려고 할 때 응답은(네트워크 탭과 콘솔을 모두 볼 때) 두 개의 빈 어레이뿐입니다.

당신은 통과해야 합니다.FormDataobject를 데이터 매개 변수로 지정합니다.

var request = new FormData();                   
$.each(context.prototype.fileData, function(i, obj) { request.append(i, obj.value.files[0]); });    
request.append('action', 'upload');
request.append('id', response.obj.id);
$.ajax({

    type        : 'POST',
    url     : context.controller,
    data        : request,
    processData : false,
    contentType : false,                        
    success     : function(r) {
        console.log(r);
        //if (errors != null) { } else context.close();

    },

    error       : function(r) { alert('jQuery Error'); }

});

언급URL : https://stackoverflow.com/questions/12831680/jquery-ajax-multipart-form-data-not-sending-data

반응형