Я пытаюсь создать простую форму загрузки файлов для моего сайта. Я использую скрытый iFrame, чтобы сделать его в стиле «ajax», чтобы пользователь мог загружать файлы один за другим, используя ту же форму.
Сейчас у меня есть форма с <input type="file" />
. Я имею в виду, что когда поле ввода изменяется (пользователь выбирает файл), оно должно отправить форму с целевым значением, установленным в iFrame, который загружает скрипт php, а затем сбросить поле ввода, чтобы позволить пользователю снова загрузить файл. Кажется, что происходит, когда форма отправляется в зависимости от количества отправлений формы. например, если вы нажмете кнопку при загрузке страницы, она будет отправлена один раз, однако если вы нажмете кнопку еще раз (без перезагрузки страницы), она будет отправлена два раза, а когда вы нажмете кнопку в третий раз, она отправит форму три раза и т. д.
Вот мой javascript, когда изменяется входной сигнал
newupload - это идентификатор ввода
newimgform - это идентификатор формы
postframe - это идентификатор iframe
$("#newupload").change(function() {
var max = 5242880, iframe = $("#postframe"), iframeContents;
$('#newimgform').attr("action", "uploadPicture.php")
$('#newimgform').attr("method", "post")
$('#newimgform').attr("MAX_FILE_SIZE", max)
$('#newimgform').attr("enctype", "multipart/form-data")
$('#newimgform').attr("encoding", "multipart/form-data")
$('#newimgform').attr("target", "postframe")
$('#newimgform').submit();
$("#postframe").load(function() {
iframeContents = jQuery.parseJSON($(this.contentDocument).find('body').html());
alert(iframeContents.filename);
$("#newimgform")[0].reset();
});
});
Я искал кого-то еще, кто пытался сделать это, и я видел здесь несколько ответов, что разговор о представлении связан несколько раз, и мне нужно использовать unbind, как $('#newimgform').unbind("submit").submit();
, но это, похоже, ничего не делает. Я не могу использовать флэш-загрузчики или что-то еще, так что это должен быть чистый html / javascript / php.