Я пытаюсь создать простую форму для загрузки файлов для своего сайта. Я использую скрытый iFrame, чтобы сделать это «ajax», чтобы я мог загружать файлы один за другим с использованием той же формы.Спрятанная загрузка файла iFrame добавляет дополнительное время для каждого последующего отправления
Сейчас у меня есть форма с <input type="file" />
. Что происходит, когда изменяется поле ввода (пользователь выбирает файл), он должен отправить форму с целевым набором в iFrame, который загружает скрипт php, а затем сбрасывает поле ввода, чтобы позволить пользователю снова загружать. Кажется, что форма отправляется в зависимости от того, сколько раз была отправлена форма. например, если вы нажмете кнопку при загрузке страницы, она будет отправляться один раз, однако, если вы снова нажмете кнопку (без перезагрузки страницы), она будет отправляться два раза, а когда вы нажмете кнопку в третий раз, она представит форму три раза и так далее.
Вот мой Javascript, когда вход изменяет
newupload является идентификатор входа
newimgform является идентификатор вида
postframe является идентификатор фрейма
$("#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();
});
});
I искал, чтобы кто-то еще пытался это сделать, и я видел некоторые ответы здесь, что разговоры о submit связаны несколько раз, и мне нужно использовать unbind как $('#newimgform').unbind("submit").submit();
, но это, кажется, ничего не делает. Я не могу использовать какие-либо флеш-ролики или что-то еще, поэтому это должен быть чистый html/javascript/php.
Является ли обработчик изменения добавлением несколько раз? – epascarello
Проблема заключалась в том, что обработчик нагрузки iframe вызывался внутри функции изменения. Исправлено спасибо ShankarSangoli и Jasper –