il problema si pone per riuscire a ricavare i parametri 'name' e 'tmp_name' dell'input file all'interno di uno script ajax!
Diciamo che io voglio richiamare una funzione (xmlhttpPost) javascript all'evento onSubmit e dopo i vari passaggi di ajax ho bisogno di recuperare i valori dell'input file, scriverli in post ("nome=".+nome+"&casa="+casae inviarli a un file che in php me li stampi (successivamente li riutilizzerò)!
codice:<script language="Javascript"> //Funzione per la gestione asincrona AJAX function xmlhttpPost(strURL) { //Inizializzo l'oggetto xmlHttpReq var xmlHttpReq = false; var self = this; // qui valutiamo la tipologia di browser utilizzato per selezionare la tipologia di oggetto da creare. // Se sono in un browser Mozilla/Safari, utilizzo l'oggetto XMLHttpRequest per lo scambio di dati tra browser e server. if (window.XMLHttpRequest) { self.xmlHttpReq = new XMLHttpRequest(); } // Se sono in un Browser di Microsoft (IE), utilizzo Microsoft.XMLHTTP //che rappresenta la classe di riferimento per questo browser else if (window.ActiveXObject) { self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); } //Apro il canale di connessione per regolare il tipo di richiesta. //Passo come parametri il tipo di richiesta, url e se è o meno un operazione asincrona (isAsync) self.xmlHttpReq.open('POST', strURL, true); //setto l'header dell'oggetto self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); /* Passo alla richiesta i valori del form in modo da generare l'output desiderato*/ self.xmlHttpReq.send(recuperaValore()); /* Valuto lo stato della richiesta */ self.xmlHttpReq.onreadystatechange = function() { /*Gli stai di una richiesta possono essere 5 * 0 - UNINITIALIZED * 1 - LOADING * 2 - LOADED * 3 - INTERACTIVE * 4 - COMPLETE*/ //Se lo stato è completo if (self.xmlHttpReq.readyState == 4) { /* Aggiorno la pagina con la risposta ritornata dalla precendete richiesta dal web server.Quando la richiesta è terminata il responso della richiesta è disponibie come responseText.*/ aggiornaPagina(self.xmlHttpReq.responseText); } } } /*Questa funzione recupera i dati dal form.*/ function recuperaValore() { var form = document.forms['form']; //Recupero il nome del form var titolo = form.titolo.value; // Recupero il testo nella casella txt var imge = form.imge.value; // Recupero il testo nella casella txt var descrizione = form.descrizione.value; // Recupero il testo nella casella txt valore = 'titolo=' + escape(titolo)+'&descrizione=' + escape(descrizione)+'&imge=' + escape(imge); //Setto il valore della casella in modo idoneo a AJAX return valore; } /*Questa funzione viene richiamata dall'oggetto xmlHttpReq per l'aggiornamento asincrono dell'elemento risultato*/ function aggiornaPagina(stringa){ document.getElementById("risultato").innerHTML = stringa; } </script> <form name="form" enctype="multipart/form-data" onSubmit="javascript:xmlhttpPost('action.php'); return false;"> <span>Immagine:</span> <input type="file" id="imge" name="imge" /></p> <span>Titolo:</span> <input type="text" name="titolo" /></p> <span>Descrizione:</span> <textarea name="descrizione"></textarea></p> <input type="submit" value="Invia" /> <div id="risultato"></div> </form>
Poi nel file php:
<?php
Lo script funziona solo per i campi text e textarea!!!!codice:$titolo = $_POST['titolo']; $descrizione = $_POST['descrizione']; $percorso = $_FILES['imge']['tmp_name']; $nome = $_FILES['imge']['name']; echo "Post inserito: Titolo = $titolo, Descrizione = $descrizione Percorso= $percorso nome= $nome"; ?>
Ma non mi stampa le info sul file!!!!!!
Aspetto pareri! grazie...

e inviarli a un file che in php me li stampi (successivamente li riutilizzerò)!
Rispondi quotando