Вам следует прочитать этот симпатичный плагин, который позволяет загружать файлы асинхронно.
http://malsup.com/jquery/form/#options-object
Добавить следующий текст в body
, где бы он ни находился:
<button onclick="openPopup()">Show dialog</button>
<div id="modalFormDia"><!-- blank --></div>
Добавьте следующее к head
, чтобы загрузить плагин. Хороший пример использование здесь
<script src="http://malsup.github.com/jquery.form.js"></script>
Работает со скрытым iframe, отправляя результаты в ваш бэкэнд, не открывая никаких окон.
Таким образом, все может быть сделано в одном «окне» или, давайте сделаем так, чтобы всплывающее диалоговое окно, которое вы, вероятно, искали
Захватите образец кода с скрипки здесь . Следующий код может быть помещен в любом месте, глобально доступны
function onComplete(xhr) {
// Lets expect that the server sends back
// the URL pointing to uploaded image, an error if failed
if (xhr.responseText.match("error")) {
// failed
$("#feedback").html("Upload failed: " + xhr.responseText);
} else {
// uploaded
$("#feedback").html('Upload done <button>"LOVING IT, USE THIS"</button>').click(function() {
// image accepted, close dialog and set the image on main page
diaDom.dialog('close')
$('#targetOnPage') // ....
});
$('#preview').html('<img src="' + xhr.responseText + '" alt="Image preview loads here"/' + '>');
}
}
function openPopup() {
// get the dialog DOM node (if first time, create)
var diaDom = $('#modalFormDia')
diaDom.html('<form id="myForm" onsubmit="return false;" action="upload.php" method="post" enctype="multipart/form-data">' + '<input type="file" name="myfile"><br>' + '<input type="submit" value="Upload File to Server">' + '<hr/><div id="preview"></div><div id="feedback"></div>').dialog({
buttons: {
"Cancel": function() {
$(diaDom).dialog('close');
}
},
closeOnEscape: false,
autoOpen: true,
modal: true,
title: 'Image Uploader'
});
// setup form with hooks
$('#myForm').ajaxForm({
beforeSend: function() {
$('#feedback').html('Upload starting')
},
complete: onComplete
});
}