utilizzando Ajax con 3 elenchi a discesa consecutivi a seconda dell'uno

La pace sia con voi Tutto, sono nuovo nell'utilizzo di Ajax, il problema è che sto avendo 3 elenchi a discesa collegati a un database, il primo è "nome" e il secondo è "età" e il terzo è " nazione"! così, mi sono connesso al database e ho recuperato i dati da esso nel primo elenco "nome" e poi usando Ajax, ho recuperato con successo i dati corrispondenti dopo aver selezionato qualsiasi opzione del primo elenco e li ho inseriti nel secondo elenco chiamato "age" , il problema è che quando uso lo stesso identico modo con la seconda list chiamata "age" per recuperare i dati corrispondenti nella terza list chiamata "country" non funziona! quindi per favore aiutathemes, sto usando questo esempio per imparare Ajax e quindi applicare su un progetto reale più grande! ecco il codice: – in primo luogo, la pagina home.php: –

<?php include "config.php"; ?> <html> <head> <script type="text/javascript"> function agematch() { if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); } xmlhttp.onreadystatechange = function() { if(xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.getElementById('age').innerHTML = xmlhttp.responseText; } } xmlhttp.open('GET', 'connection.inc.php?name='+document.ajax.name.value, true ); xmlhttp.send(); } function countrymatch() { if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); } xmlhttp.onreadystatechange = function() { if(xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.getElementById('country').innerHTML = xmlhttp.responseText; } } xmlhttp.open('GET', 'country.inc.php?age='+document.ajax.age.value, true ); xmlhttp.send(); } </script> </head> <body> <form id="ajax" name="ajax" > Choose your name : <select name="name" id="name" select="selected" onchange="agematch();"> <option> </option> <?php $query = "SELECT DISTINCT name FROM info"; $result = mysql_query($query); while($row = mysql_fetch_arrays($result)){ echo"<option value ='".$row[0]."'> '"[email protected]$row[0]."'</option>"; } ?> </select> Age : <select id="age" name="age" onchange="countrymatch();"> </select> country : <select id="country" name="country"> <option> </option> </select> </form> </body> </html> 

ora, la pagina della prima chiamata Ajax: –

 <?php include "config.php"; echo " <option> </option> " ; if(isset( $_GET['name']) ) { @$name = $_GET['name']; } $query = "SELECT age FROM info WHERE name = '"[email protected]$name."' "; $result = mysql_query($query); while ($query_row = mysql_fetch_arrays($result)) { echo " <option value ='".$query_row[0]."'> $query_row[0]</option> "; } ?> 

Ora, con la pagina per la seconda chiamata Ajax per il terzo menu a discesa: –

 <?php include "config.php"; if (isset( $_GET['age']) ) { @$age=$_GET['age']; } $query = "SELECT country FROM info WHERE name='"[email protected]$name."' AND age='"[email protected]$age."' "; $result= mysql_query($query); while ($query_row = mysql_fetch_arrays($result)) { echo " <option value = '".$query_row[0]."'> $query_row[0] </option> "; } ?> 

così come vedi, ecco il codice, e ovviamente sono collegato al database attraverso una pagina chiamata "config.php", quindi voglio che tu mi aiuti a risolvere questo problema e recuperare i dati dal database al terzo drop in basso "paese". Grazie in anticipo!

Ok, Musa qui è la modifica: –

 function countrymatch() { if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); } xmlhttp.onreadystatechange = function() { if(xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.getElementById('country').innerHTML = xmlhttp.responseText; } } var age = encodeUriComponent(document.ajax.age.value), var name = encodeUriComponent(document.ajax.name.value), xmlhttp.open('GET', 'country.inc.php?age='+age+'&name'+name, true ); xmlhttp.send(); } 

e anche :-

 <?php include "config.php"; if (isset($_GET['age'], $_GET['name']) ) { @$age=$_GET['age']; @$name = $_GET['name']; } $query = "SELECT country from info where name='"[email protected]$name."' AND age='"[email protected]$age."' "; $result= mysql_query($query); while ($query_row = mysql_fetch_arrays($result)) { echo " <option value = '".$query_row[0]."'> $query_row[0] </option> "; } ?> 

Non ricevo alcun messaggio di errore, sono sicuro che il tuo punto è giusto ma questa soluzione non ha funzionato purtroppo! grazie mille per avermi aiutato 🙂

Non hai inviato il nome nella seconda richiesta Ajax ma ne hai bisogno per la tua query sul database, quindi dovrai submit il nome e l'età nella richiesta Ajax. Inoltre non stai disinfettando il tuo input, devi sempre validationre l'input dell'utente, suggerirei anche di non usare mysql_ *

Questa estensione è obsoleta dal PHP 5.5.0 e verrà rimossa in futuro. Invece, dovrebbe essere usata l'estensione MySQLi o PDO_MySQL . Vedi anche MySQL: scelta di una guida API e domande frequenti correlate per maggiori informazioni.

 var age = encodeURIComponent(document.ajax.age.value), var name = encodeURIComponent(document.ajax.name.value), xmlhttp.open('GET', 'country.inc.php?age='+age+'&name'+name, true ); 
 if (isset($_GET['age'], $_GET['name']) ) { $age = $_GET['age']; $name = $_GET['name']; ... }