Sie sollten dieses nette Plugin lesen, mit dem Sie Dateien asynchron hochladen können.
http://malsup.com/jquery/form/#options-object
Folgendes einfügen body
wo immer auf der Seite es passt:
<button onclick="openPopup()">Show dialog</button>
<div id="modalFormDia"><!-- blank --></div>
Folgendes hinzufügen head
um das Plugin zu laden. Nettes Beispiel Verwendung hier
<script src="http://malsup.github.com/jquery.form.js"></script>
Es arbeitet mit einem versteckten Iframe, der die Ergebnisse an Ihr Backend übermittelt, ohne ein Fenster zu öffnen.
Auf diese Weise kann alles in einem "Fenster" erledigt werden, oder, lassen Sie uns das Dialog-Popup machen, nach dem Sie wahrscheinlich suchen
Schnappen Sie sich Beispielcode aus einem hier fummeln . Der folgende Code kann überall eingefügt werden, auch global zugänglich
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
});
}