Visualizzazione risultati 1 fino 4 di 4

Discussione: Problema con file Php e Ajax: Errore "Undefined index"

  1. #1
    Guest

    Predefinito Problema con file Php e Ajax: Errore "Undefined index"

    Buonasera ragazzi,
    sono rimasto bloccato sui miei codici php e ajax per questo errore che non riesco a capire come risolvere.
    Se eseguo il codice php senza ajax questo errore non si riscontra.Ma appena lo utilizzo con ajax non c'è nulla da fare.P.S:So che sembra banale ma altre volte non mi era mai successo.
    Codice HTML:
    <html>
    <head><title>Ajax</title>
    	<script type="text/javascript">
    		function invio(dati){
    			var xhr = new XMLHttpRequest();
    			var name=dati.name.value;
    			xhr.open("POST","registrazione.php",true);
    			xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    			xhr.onreadystatechange = function(){
    				if( xhr.readyState == 4 && xhr.status == 200 ) {
    					document.getElementById("documento").innerHTML = xhr.responseText;
    				}
    			}
    			xhr.send(name);
    		}
    	</script>
    </head>
    <body>
    		<label>Nome:</label>
    		<input type="text" name="name"/>
    		<button type="invia" onclick="invio(this);">INVIA</button>
    		<p id="documento"></p>
    </body>
    </html>



    Codice PHP:
    <?php
    $_POST
    ["name"];
    if(isset(
    $_POST["name"])){
    echo
    "ok";
    }
    else{echo
    "ko";}
    ?>

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,173

    Predefinito

    Ci sono due problemini:
    • Codice:
      xhr.send(name);
      Forse ti sei fatto prendere dal nome della variabile: a send devi passare una stringa del tipo:
      Codice:
      parametro1=valore1&parametro2=valore2 etc etc
      Quindi invece di:
      Codice:
      var name=dati.name.value;
      dovresti preparare la stringa, quindi:
      Codice:
      var name='name='+dati.name.value;
      (a questo punto io cambierei il nome della variabile, da "name" a "parametri").
    • Non hai un form, onclick="invio(this)", il this è riferito al <button> e non credo potrai mai prelevare il valore dell'input text in quel modo.


    Per pignoleria,
    Codice PHP:
    $_POST["name"];
    if(isset(
    $_POST["name"])){
    ...
    Non ha molto senso, immagino tu l'abbia messo per vedere il contenuto (?) [in tal caso avresti dovuto usare var_dump() o una semplice echo].
    Comunque non ha molto senso perché nella prima riga utilizzi quella variabile, poi nella seconda controlli se esiste... Dovrebbe essere il contrario.
    Imposta anche il doctype all'html .

    Ciao!
    Ultima modifica di alemoppo : 06-03-2018 alle ore 19.50.45

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Ci sono due problemini:
    • Codice:
      xhr.send(name);
      Forse ti sei fatto prendere dal nome della variabile: a send devi passare una stringa del tipo:
      Codice:
      parametro1=valore1&parametro2=valore2 etc etc
      Quindi invece di:
      Codice:
      var name=dati.name.value;
      dovresti preparare la stringa, quindi:
      Codice:
      var name='name='+dati.name.value;
      (a questo punto io cambierei il nome della variabile, da "name" a "parametri").
    • Non hai un form, onclick="invio(this)", il this è riferito al <button> e non credo potrai mai prelevare il valore dell'input text in quel modo.


    Per pignoleria,
    Codice PHP:
    $_POST["name"];
    if(isset(
    $_POST["name"])){
    ...
    Non ha molto senso, immagino tu l'abbia messo per vedere il contenuto (?) [in tal caso avresti dovuto usare var_dump() o una semplice echo].
    Comunque non ha molto senso perché nella prima riga utilizzi quella variabile, poi nella seconda controlli se esiste... Dovrebbe essere il contrario.
    Imposta anche il doctype all'html .

    Ciao!
    Codice HTML:
    <html>
    <head><title>Ajax</title>
    <script type="text/javascript">
    function invio(dati){
    			var xhr = new XMLHttpRequest();
    			var name='name='+dati.name.value;
    			xhr.open("POST","registrazione.php",true);
    			xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    			xhr.onreadystatechange = function(){
    				if( xhr.readyState == 4 && xhr.status == 200 ) {
    					document.getElementById("documento").innerHTML = xhr.responseText;
    				}
    			}
    			xhr.send(name);
    		}
    </script>
    </head>
    <body>
    Nome: &nbsp;<input type="text" id="name" name="name"/>
    <br><br>
    <button name="invia" onclick="invio();">Invia</button> <br><br>
    <br><br>
    <div id="documento"></div>
    <br>
    </body>
    </html>
    Grazie innanzitutto della risposta.Purtroppo peró cosí fatto il codice non va,sicuramente per errore mio.

    RETTIFICA:Scusa infatti l'errore era mio ora il codice gira grazie mille per la disponibilità :)
    PROBLEMA 2:Come faccio a far funzionare lo script in un form utilizzando il tasto submit?
    Ultima modifica di sanse : 06-03-2018 alle ore 20.18.45

  4. #4
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    In php non si inizilizzano variabili senza valore..
    Prova jquery ajax e poi prevent.default

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •