Javascript contentType:false和processData:false在PHP中使POST为空

Javascript contentType:false和processData:false在PHP中使POST为空,javascript,php,ajax,post,Javascript,Php,Ajax,Post,我正在尝试使用AJAX将文件上载到服务器。AJAX调用工作正常,我的PHP返回正确,但是当我添加contentType:false和processData:false时,它就不再正确了 var formData = new FormData(); formData.append('image', input.files[0]); $.ajax({ url: "php/API.php", data: {action: "changeProfilePicture", profile

我正在尝试使用AJAX将文件上载到服务器。AJAX调用工作正常,我的PHP返回正确,但是当我添加
contentType:false
processData:false
时,它就不再正确了

var formData = new FormData();
formData.append('image', input.files[0]);

$.ajax({
    url: "php/API.php",
    data: {action: "changeProfilePicture", profilePicture: formData},
    type: "POST",
    contentType: false, // if i remove this
    processData: false, // and this, and my form data in `data:` then POST is not empty
    success: function(resp) {
        console.log(resp)
    }
});

// inside of php/API.php
<?php
    // post is empty
    print_r($_POST);

    if(isset($_POST) && !empty($_POST)) {
        ...
    }
?>
var formData=new formData();
formData.append('image',input.files[0]);
$.ajax({
url:“php/API.php”,
数据:{操作:“changeProfilePicture”,profilePicture:formData},
类型:“POST”,
contentType:false,//如果我删除此
processData:false,//这个,以及`data:`中的我的表单数据,那么POST不是空的
成功:功能(resp){
控制台日志(resp)
}
});
//php/API.php的内部

使用
jQuery.ajax
发送多部分/formdata时,请求数据应该是formdata的一个实例。e、 g


contentType描述了发送到API和processData集的数据是否以及如何根据contentType处理数据。因此contentType不应为false。删除
contentType
后,POST仍然为空。可能存在重复的
var formData = new FormData();
formData.append('image', input.files[0]);
formData.append('action', 'changeProfilePicture');
$.ajax({
    url: "php/API.php",
    data: formData,
    type: "POST",
    contentType: false, 
    processData: false,
    ...