Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Recupero dei valori da input FILE

    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="+casa e 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
    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";
    ?>
    Lo script funziona solo per i campi text e textarea!!!!
    Ma non mi stampa le info sul file!!!!!!
    Aspetto pareri! grazie...

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Comincia con l'eliminare una possibile causa d'errore: in una pagina non possono esistere oggetti diversi con lo stesso nome, quindi niente variabili omonime dei campi del form e niente variabili con lo stesso nome generico di altri oggetti... per esempio "form" e' parola riservata.

    Inoltre non si puo' inviare un file con ajax... nel modo che tu adoperi invii solo una stringa con il nome del file, non il suo contenuto.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    mmm giusto ora proverò intanto a fare queste modifiche... ma c'è qualcuno che sa consigliarmi come ricavare i parametri dell'input file con javascript, quindi ajax?

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da br1
    non si puo' inviare un file con ajax
    Cosa non e' chiaro di questo?

    E se tu volessi leggere un file in locale con javascript, sappi che non si puo'.

    Forse se si trattasse di una applicazione intranet, ma in quel caso dovresti fare il giro delle postazioni per personalizzare le impostazioni di ogni browser...

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    Il problema fondamentale è che vorrei riuscire ad ottenere 2 variabili relative all'input file che in php si chiamano: $_FILES['nomefile']['name']; $_FILES['nomefile']['tmp_name']; che restituiscono nome e percorso locale dell'img sul tuo pc.

    Voi risponderesti: se lo sai fa co php fallo con php!! In realtà con solo php non posso avitare il refresh della pagina e volevo inviare appunto le 2 info tramite post ajax!!!!

    Sapete dirmi come posso ricavare queste info?

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Devi inviare il file... ma dato che non lo puoi fare con ajax e non vuoi il refresh della pagina sei costretto ad inviarlo con un form normale che reindirizzi l'esito ad un frame nascosto:

    <iframe name="nascosto" style="width:1px;height:1px;visibility:hidden;"></iframe>
    <form ... target="nascosto"><input ... type=file>

    Il programma che riceve il file potrebbe restituire uno script che avvii l'invio con ajax del form principale... quello senza file.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  7. #7
    Originariamente inviato da br1
    Devi inviare il file... ma dato che non lo puoi fare con ajax e non vuoi il refresh della pagina sei costretto ad inviarlo con un form normale che reindirizzi l'esito ad un frame nascosto:

    <iframe name="nascosto" style="width:1px;height:1px;visibility:hidden;"></iframe>
    <form ... target="nascosto"><input ... type=file>

    Il programma che riceve il file potrebbe restituire uno script che avvii l'invio con ajax del form principale... quello senza file.

    ciao

    Mi piace questa idea.... ma nn sono esperto di iframe!!!! Come posso inviare i dati dal form all'iframe senza refresh, ricavando il percorso locale del file???? Grazie mille

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.