Я пишу фрагмент для загрузки изображений через AJAX. Пользователь выбирает изображение в файле-входе формы. Форма имеет функцию onsubmit, которая предотвращает дефолт, так что страница не перезагружается после отправки. В этой функции formdata захватывается и отправляется через XMLHttpRequest, в котором есть некоторые прослушиватели событий. Также «load» -eventlistener. Эта «нагрузка» -функция состоит из таких вещей, как скрытие загрузчика и эхо-то вроде «готовой загрузки». Страница, на которой данные передаются через ajax, имеет php-скрипт, который масштабирует изображение, копирует его, переименовывает и т. Д. К нему создаются различные копии в разных размерах изображения.AJAX load-eventlistener срабатывает перед получением ответа от сервера
Проблема: если я отправлю форму НЕ через ajax, все будет в порядке. Php-требуется несколько секунд, пока все не будет сохранено и страница загружена. Через Ajax, сразу после отправки формы, он говорит «закончен», но php-скрипт не выполняется! Похоже, что AJAX останавливает запуск PHP скрипта. Функция «load» IS FIRED! Но путь к началу! Почти сразу же после подачи ...
Вот в JS-код:
loader("show");
window.event.preventDefault();
var data = $(form).serializeArray();
var src = form.getAttribute("action");
$.post(src, data)
.done(function(data) {
loader("hide");
});
Я также протестировали с чистым JS, но та же проблема:
var formdata = $(form).serializeArray();
var page = form.getAttribute("action");
loader(show);
var ajax = new XMLHttpRequest();
ajax.addEventListener("load", function(event) { completeHandler(event);}, false);
ajax.open("POST",page);
ajax.send(formdata);
completeHandler:
function completeHandler (evt) {
alert("finished");
loader("hide");
}
Спасибо за помощь! :)
EDIT: HTML-:
<form method="post" action="create.php" onSubmit="uploadForm(this)" enctype="multipart/form-data">
<input id="file1" type="file" name="image">
<input type="submit" value="Add" name="submit">
</form>
_ «В php требуется несколько секунд», сколько секунд? – guest271314
Я считаю, что вам нужно указать данные о multipart form при загрузке файла ... http://stackoverflow.com/questions/1342506/why-is-form-encrtype-multipart-form-data-required-when-uploading-a -file – OliverJ90
PHP требуется около 5 секунд ... – Hustensaft