ciao a tutti! dopo un anno e più di assenza torno sul forum con un problema: sto creando uno script basato su ajax che permetta l'upload multiplo di file senza ricaricare la pagina.
la pagina carica.html avrebbe al suo interno qualcosa di simile:
Codice HTML:
<div id="bigDiv">
<div id="div_0">
<form name="form_0" blablabla>
<input type="file" name="uploadFile" blabla />
</form>
</div>
<div id="div_1">
<form name="form_1" blablabla>
<input type="file" name="uploadFile" blabla />
</form>
</div>
<!-- e poi di seguito finché mi va.. -->
</div>
la parte javascript interessante, invece, sarebbe qualcosa del genere:
Codice:
function ajaxCompletedUpload ( )
{ // Una volta recuperato l'output, agisce di conseguenza.
if (XmlHttpObject.readyState == 4)
{
var r = (XmlHttpObject.responseText).split("|"); // Recupera l'output.
var id = r[0]; // Id del file corrente.
var ok = r[1]; // Risultato dell'operazione.
var fn = r[2]; // Nome del file corrente.
if (ok == "true")
updateDiv(id, "okUpload", "Il file <b>" + fn + "</b> è stato caricato correttamente."); // Upload corretto.
else
updateDiv(id, "errUpload", "Errore durante il caricamento del file <b>" + fn + "</b>. Riprovare in un secondo momento."); // Problemi.
}
}
function ajaxStartUpload ( id )
{ // questa è la parte incriminata, nel senso che non so come fare..
xmlHttp = ajaxXmlHttpObject();
if (xmlHttp == null)
{
window.alert("Error: your browser does not support our AJAX libraries.\nPlease update your browser.");
xmlHttp = false;
}
xmlHttp.onreadystatechange = ajaxCompletedUpload();
xmlHttp.open("POST", "upload.php?act=ajax", true);
xmlHttp.send(null);
}
(la parte problematica è in grassetto sottolineato)
ora: la funzione updateDiv(..) scrive un messaggio dentro al div corrispondente al file appena caricato, e lo assegna ad una diversa classe del css, mentre la funzione ajaxXmlHttpObject() è quella che assegna as xmlHttp un oggetto new XMLHttpRequest() a seconda del browser dell'utente..
il problema vero e proprio nasce con la funzione ajaxStartUpload: in pratica non so come far inviare il file e le variabili con un metodo post. se si trattasse di non inviare nessun file, opterei per qualcosa del tipo:
Codice:
xmlHttp.open("GET", "nonso.php?varabile=" + variabile, true);
spero di essermi riuscito ad esprimere in un linguaggio intelleggibile..