#php #jquery
#php #jquery
Вопрос:
$('.result').click(function(event) {
var st = JSON.stringify(fileList);
$.ajax({
url: 'mailer.php',
type: 'POST',
data: st,
})
.done(function(data) {
console.log(st);
})
.fail(function() {
console.log("error");
})
.always(function() {
console.log("complete");
});
});
Ошибка
https://i.stack.imgur.com/mtsAP.png
Однако, если вы введете просто:
console.log(fileList);
Он показывает все правильно
https://i.stack.imgur.com/kNptA.png
PHP
<?php
$data = json_decode($_POST['fileList']);
echo $data;
Ответ №1:
Из вывода консоли на втором изображении видно, что fileList
это массив файловых объектов. Таким образом, вы должны добавить их к объекту FormData и установить его в качестве data
вашего $.ajax()
вызова. Попробуйте это:
$('.result').click(function(event) {
var fd = new FormData();
fileList.forEach(file => fd.append(file.name, file));
$.ajax({
url: 'mailer.php',
type: 'POST',
data: fd,
contentType: false, // required when sending FormData
processData: false // required when sending FormData
}).done(function(data) {
console.log(data);
}).fail(function() {
console.log("error");
}).always(function() {
console.log("complete");
});
});
Оттуда вам нужно будет использовать $_FILES
коллекцию в PHP для доступа к файлам, отправленным в запросе, а не $_POST
.
Комментарии:
1. Что ж, ошибки исчезли. В журнал добавлены FormData. Могу ли я как-то увидеть, был ли туда добавлен файл?
Ответ №2:
https://i.stack.imgur.com/fYbhv.png 108 строка
fileList.forEach(file => fd.append(file));