Я работаю над отправкой формы с помощью AJAX, но использую простой JavaScript, без внешних библиотек.
У меня возникла проблема, когда дело доходит до синтаксического анализа формы, поскольку PHP, похоже, неправильно анализирует данные.
Из некоторых исследований в интернете я видел, что люди устанавливают тип контента на «ложь». Проблема, однако, заключается в том, что они используют JQuery для этого, и я не уверен, как мне это сделать в простом JavaScript.
Я только отправляю файл, и мои PHP-процессы отлично загружены традиционным способом.
AJAX также, кажется, работает безупречно, и я не вижу ошибок в коде. Вот моя функция загрузки.
var fd = new FormData();
fd.append("upload-file", document.getElementById('upload-file').files[0]);
var xhr = new XMLHttpRequest();
/* I add some event listeners here for progress, load, error, and abort */
xhr.open("POST", "upload.php");
xhr.send(fd);
Чтобы установить тип контента, вам нужно изменить заголовок запроса.
Я не знаю, какой тип контента вы хотите установить, поэтому я по умолчанию выбрал json.
Вот как вы можете установить его:
var fd = new FormData();
fd.append("upload-file", document.getElementById('upload-file').files[0]);
var xhr = new XMLHttpRequest();
/* I add some event listeners here for progress, load, error, and abort */
xhr.open("POST", "upload.php");
xhr.setRequestHeader("Content-type","application/json");
xhr.send(fd);
РЕДАКТИРОВАТЬ: Настройка заголовков HTTP-запросов из MDN
Других решений пока нет …