Проблема заключается в этом разделе вашего кода
$.ajax({
url: 'upload.php', // point to server-side PHP script
data: form_data,
type: 'post',
success: function(data){
console.log(data); // display response from the PHP script, if any
}
});
Добавьте эти параметры к вашему ajax вызову
$.ajax({
url: 'upload.php', // point to server-side PHP script
data: form_data,
enctype: 'multipart/form-data',
type: 'post',
processData: false,
contentType: false,
success: function(data){
console.log(data); // display response from the PHP script, if any
}
});
См. Jquery документацию здесь https://api.jquery.com/jQuery.ajax/
processData
По умолчанию данные, передаваемые в параметр данных в виде объекта (технически, ничего, кроме строки), будут обрабатываться и преобразовываться в строку запроса, соответствующую типу содержимого по умолчанию "application / x- www-form-urlencoded". Если вы хотите отправить DOMDocument или другие необработанные данные