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

    [Ajax] Invio dati tramite POST

    Ciao a tutti, ho un problema con uno script Ajax + PHP.
    Sto cercando di inviare del testo una pagina PHP tramite POST.
    Quando effettuo l'invio dei dati tramite GET, funziona tutto correttamente:
    codice:
    dati = "testo da inviare";
    ajax.open("GET", "richiesta.php?q="+dati+"", true);
    ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
    ajax.send(null);
    Quando invece provo ad inviarlo tramite POST, nella pagina PHP non ricevo nulla!
    codice:
    dati = "testo da inviare";
    ajax.open("POST", "richiesta.php", true);
    ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
    ajax.send(dati);
    La pagina PHP non fa altro che stampare l'array dei dati ricevuti, nel primo caso $_GET e nel secondo caso $_POST.

    Evito di postare il resto del codice perchè con GET funziona tutto correttamente, quindi penso che il problema stia nella fase di invio.
    http://www.firesoftweb.it - Servizi gratuiti per il tuo sito web: forum, guestbook, contatori visite...

  2. #2
    provato con questi header?

    Codice PHP:
    http.setRequestHeader("Content-type""application/x-www-form-urlencoded"); http.setRequestHeader("Content-length"dati.length); 
    http.setRequestHeader("Connection""close"); 
    io ti consiglio di usare un bel framework, tipo jQuery

  3. #3
    Purtroppo neanche così funziona...
    Mi sembra assurdo, perchè con il GET va!
    Non vedo perche non debba andare con il POST!
    http://www.firesoftweb.it - Servizi gratuiti per il tuo sito web: forum, guestbook, contatori visite...

  4. #4
    hai uno script debugger tipo firebug? se si verifica che non ci siano degli errori

  5. #5
    Ho verificato e non ci sono errori...
    http://www.firesoftweb.it - Servizi gratuiti per il tuo sito web: forum, guestbook, contatori visite...

  6. #6
    a questo punto prova a postare tutto il codice relativo alla chiamata ajax!

  7. #7
    Queste sono le funzioni javascript:
    codice:
    <script type="text/javascript">
    function assegnaXMLHttpRequest() {
    	var
    		XHR = null,
    		browserUtente = navigator.userAgent.toUpperCase();
    	if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
    		XHR = new XMLHttpRequest();
    	else if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0) {
    		if(browserUtente.indexOf("MSIE 5") < 0)
    			XHR = new ActiveXObject("Msxml2.XMLHTTP");
    		else
    			XHR = new ActiveXObject("Microsoft.XMLHTTP");
    	}
    	return XHR;
    };
    
    function invia() {
    	form_pulsante = document.getElementById("pulsante");
    	form_testo = document.getElementById("testo");
    	div_risposta = document.getElementById("risposta");
    	
    	ajax = assegnaXMLHttpRequest();
    	if(ajax) {
    		pulsante.disabled = true;
    		div_risposta.innerHTML = "[img]attesa.gif[/img] Operazione in corso...";
    		dati = form_testo.value;
    		ajax.open("POST", "richiesta.php", true);
    		ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    		ajax.setRequestHeader("Content-length", dati.length); 
    		ajax.setRequestHeader("Connection", "close");
    
    		ajax.send(dati);
    
    		ajax.onreadystatechange = function() {
    			if(ajax.readyState == 4) {
    				div_risposta.innerHTML = ajax.responseText;
    				pulsante.disabled = false;
    			}
    		}
    	}
    }
    </script>
    Questo è il codice HTML della pagina, campo nel quale viene inserito il testo e div per la risposta
    codice:
    <input id="testo" type="text">
    <input id="pulsante" type="button" value="Invia" onClick="invia();">
    
    
    <div id="risposta">
    </div>
    E infine il codice PHP della pagina che legge i dati in arrivo
    codice:
    <?php
    print_r($_POST);
    ?>
    E questa è la risposta:

    Array ( )
    http://www.firesoftweb.it - Servizi gratuiti per il tuo sito web: forum, guestbook, contatori visite...

  8. #8
    il problema credo sia questo.
    quando invii i dati al server in get specifichi comunque variabile=valore ad esempio
    q="+dati+"".
    Stessa cosa devi fare in post.
    Prova a fare cosi:
    Codice PHP:
    dati "q="+form_testo.value
    occhi anche

    codice:
    pulsante.disabled = true;
    pulsante non è definito nello script da te postato

  9. #9
    Grazie mille, ora funziona!!
    Mi sfuggiva il fatto di dover assegnare il valore a una variabile esattamente come nel GET.

    Per quanto riguarda l'oggetto pulsante è stata una svista, in realtà dovevo associarlo all'oggetto form_pulsante dichiarato poco sopra.

    Grazie ancora!
    http://www.firesoftweb.it - Servizi gratuiti per il tuo sito web: forum, guestbook, contatori visite...

  10. #10
    di niente


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 © 2025 vBulletin Solutions, Inc. All rights reserved.