Ik heb al heel wat topics gelezen middels de search over file uploads i.c.m. JavaScript maar niets wat mijn probleem oplost. Dubieus om in dit forum te plaatsen (i.p.v. in W&G) maar het betreft zowel server-side als client-side scripting. Het uploaden van een bestand middels het formulier is geen probleem, maar na het uploaden moet de waarde van een variabele die hierna pas is vastgesteld teruggegeven worden aan de modalDialog waarin het formulier zich bevindt. Oftewel:
Het bestand wordt geopend middels:
Het formulier in dit bestand (modalDialog):
...met aan het eind van dit document een knop (plaatje+link) met een onClick die de volgende javaScript functie in de header aanroept:
Hiermee wordt het formulier gesubmit en gaat de PHP code aan de slag het bestand te uploaden. Hier komt al een probleem om de hoek kijken: het submitten van het formulier opent ondanks de target="_self" tag in een nieuw venster. Na het uploaden is er een variabele bekend, die onder de naam $filename vervolgens door het modalDialog weer returned wordt aan het openende document. Doordat het submitten van het formulier in een nieuw venster gebeurt, is de naam van deze variabele dus niet bekend en kan niet teruggegeven worden door de modalDialog. Wat is de beste manier om ervoor te zorgen dat het JavaScriptje wacht tot het bestand is geupload, de variabele van PHP gevoerd wordt en vervolgens pas verder gaat met het uitvoeren van de rest (namelijk het teruggeven van die variabele)?
Het bestand wordt geopend middels:
code:
1
| showModalDialog("dlg_ins_image.php", window, "status:no;dialogWidth:400px;dialogHeight:240px;help:no") |
Het formulier in dit bestand (modalDialog):
code:
1
2
3
| <form name="upload_form" id="theForm" target="_self" enctype="multipart/form-data" action="dlg_ins_image.php" method="POST"> <input type="file" name="file"> </form> |
...met aan het eind van dit document een knop (plaatje+link) met een onClick die de volgende javaScript functie in de header aanroept:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| function insertImage() {
if (document.forms.theForm.file.value) {
theForm.submit();
window.returnValue = '<IMG' + attr("alt", alt.value)
+ attr("src", <?=$filename?>)
+ attr("align", align[align.selectedIndex].value)
+ ((width.value)?attr("width", width.value):"")
+ ((height.value)?attr("height", height.value):"")
+ ((vspace.value)?attr("vspace", vspace.value):"")
+ ((hspace.value)?attr("hspace", hspace.value):"")
+ ((border.value)?attr("border", border.value):attr("border",0))
+ '/>';
window.close();
}
else if (url.value) {
// niet belangrijk
}
} |
Hiermee wordt het formulier gesubmit en gaat de PHP code aan de slag het bestand te uploaden. Hier komt al een probleem om de hoek kijken: het submitten van het formulier opent ondanks de target="_self" tag in een nieuw venster. Na het uploaden is er een variabele bekend, die onder de naam $filename vervolgens door het modalDialog weer returned wordt aan het openende document. Doordat het submitten van het formulier in een nieuw venster gebeurt, is de naam van deze variabele dus niet bekend en kan niet teruggegeven worden door de modalDialog. Wat is de beste manier om ervoor te zorgen dat het JavaScriptje wacht tot het bestand is geupload, de variabele van PHP gevoerd wordt en vervolgens pas verder gaat met het uitvoeren van de rest (namelijk het teruggeven van die variabele)?