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

    Ajax: variabile non definita

    Ciao a tutti, sto utilizzando il seguente codice per inviare delle variabili ad un'altra pagina tramite Ajax e così com'è funziona senza problemi:

    codice:
    $var1 = "123";
    $var2 = "456";
    
    echo '<button type="button" onclick="showUser('.$var1.', '.$var2.')">Test</button>';
    
    <script type="text/javascript">
        function showUser(str, str2) {
            if (str == "") {
                document.getElementById("txtHint").innerHTML = "";
                return;
            } else { 
                if (window.XMLHttpRequest) {
                    xmlhttp = new XMLHttpRequest();
                } else {
                    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
                xmlhttp.onreadystatechange = function() {
                    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                        document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
                    }
                }
                xmlhttp.open("GET","test.php?var1="+str+"&var2="+str2,true);
                xmlhttp.send();
            }
        }
    </script>
    Però non capisco perchè se $var1 è uguale a qualcosa tipo "rmZZyZ56PjFQ44fBRkEjk" ottengo questo errore: "Uncaught ReferenceError: rmZZyZ56PjFQ44fBRkEjk is not defined".. Perché non dovrebbe funzionare dato che $var1 è in entrambi i casi una stringa?

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, fai attenzione al corretto utilizzo degli apici.

    A naso credo che l'errore sia qui:
    codice:
    echo '<button type="button" onclick="showUser('.$var1.', '.$var2.')">Test</button>';
    Supponiamo che $var1="123"; e $var2="456";
    anche se in PHP i valori sono espressi come stringa, lato client otterrai un codice risultante del genere :
    codice:
    <button type="button" onclick="showUser(123, 456)">Test</button>
    Cioè i valori risultanti per Javascript sono in tutto e per tutto dei valori numerici.

    In pratica, per JavaScript, quando inserisci dei valori numerici è "facoltativo" l'uso degli apici, ma chiaramente non lo è quando si tratta di valori stringa.

    Supponiamo ora che $var1="abc"; e $var2="def";
    lato client otterrai un codice risultante del genere :
    codice:
    <button type="button" onclick="showUser(abc, def)">Test</button>
    Puoi notare tu stesso che, dal punto di vista dell'interprete JavaScript, quei due valori non sono propriamente dei valori ma bensì dei nomi-variabile.

    Per risolvere ti basterà aggiungere opportunamente degli apici (con l'escape) in questo modo:
    codice:
    echo '<button type="button" onclick="showUser(\''.$var1.'\', \''.$var2.'\')">Test</button>';
    Ultima modifica di KillerWorm; 21-09-2015 a 17:24
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    infinitamente grazie!!

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.