Привет, Stackoverflow.
У меня сейчас проблема, и я не могу понять, в чем проблема. Я ранее создавал загрузчики файлов с помощью AJAX, и ни у одного из них не было следующей проблемы. Значение входного файла остается пустым. Я пробовал двумя способами.
Сначала я отправил всю форму с formData(this). Частично это сработало. Другие мои входные данные были отправлены в сценарий, который обрабатывает файл. Однако файлового ввода не было. Даже если он был в той же форме, он просто не был отправлен вместе с ним.
Сейчас я пытаюсь сделать это следующим образом;
$("#form").on('submit',(function(e) {
e.preventDefault();
var formData = new FormData();
formData.append('customer', document.getElementById("customer").value);
formData.append('owner', document.getElementById("owner").value);
formData.append('uploaded_file', document.getElementById("upload").files[0]);
$.ajax({
url: "/api/upload",
type: "POST",
data: formData,
contentType: false,
cache: false,
processData:false,
success: function(data)
{
var rtrn = jQuery.parseJSON(data);
if (rtrn.return = "false")
{
useGGA.createAlert(rtrn.message, rtrn.return, 7500);
}
else
{
useGGA.createAlert(rtrn.message, rtrn.return, 7500);
$("#form")[0].reset();
}
},
error: function()
{
useGGA.createAlert("Something went wrong!", "false", 7500);
}
});
}));
Тем не мение. Здесь у меня такая же проблема. #upload просто остается пустым. Это мой HTML;
<form id = "form" action = "api/upload" method = "post" enctype = "multipart/form-data">
<input type = "text" name = "owner" id = "owner" value = "<?= $this->model->data['owner'] ?>" readonly>
<input type = "text" name = "customer" id = "customer" value = "<?= $this->werkstatt->data['ad_id'] ?>" readonly>
<input type = "file" name = "uploaded_file" id = "upload">
<input type = "submit" class = "__submit_green __launch_upload" value = "Ausführen">
</form>
Когда я сейчас запускаю в консоли следующее: document.getElementById("upload").files[0], он мне возвращает Cannot read property 'files' of null. То же самое происходит при простой отправке формы.
Что я здесь упускаю?
удалите #, если вы используете document.getElementById, он уже знает, что это идентификатор, вы используете его с document.querySelector
Спасибо, но это была просто опечатка с моей стороны в stackoverflow. Я отредактировал это сейчас.

Не включайте
#в#upload.#сообщает селектору CSS, что далее следует идентификатор, но для такой функции, какgetElementById, функция уже знает, что параметр является идентификатором элемента. Просто используйтеdocument.getElementById("upload"), чтобы получить элемент.