AJAX Multiple Drop Downs

Sto guardando fuori da questo sito per fare un drop multiplo: Roshan’s Blog

E la maggior parte funziona, ho solo un problema con il terzo menu a discesa.
(Dropdown1: Clients, Dropdown2: Location, Dropdown3: Zone)

Sulla mia pagina finora, se guardo la fonte, dopo aver selezionato il primo menu a discesa (Client1), la seconda istruzione a discesa dice:

Qual è ciò di cui ho bisogno, ma ora, quando faccio clic su una delle opzioni nel secondo menu a discesa, non sto passando allo script getZone (). Lo ‘zonediv’ non sta cambiando, e non sono sicuro che il resto stia attraversando o meno. Se carico getZone.php da solo e inserisco le mie istruzioni GET nell’URL, ottengo risultati, ma non riesco a trovarli all’interno della pagina da cui sto chiamando i menu a discesa.

Probabilmente mi manca solo qualcosa di piccolo, ma l’ho guardato così a lungo che non riesco a capirlo.

L’HTML:

  <?php echo "-Client Name-"; $result = mysql_query("SELECT DISTINCT client_name FROM spc_clients"); while($row = mysql_fetch_array($result)){ echo "".$row['client_name'].""; } ?>  

Select Client First

Select Location First

Entrambe le funzioni JS:

 function getLocation(client_name) { var strURL="display/getLocation.php?client_name="+client_name; var req = getXMLHTTP(); if (req) { req.onreadystatechange = function() { if (req.readyState == 4) { // only if "OK" if (req.status == 200) { document.getElementById('locationdiv').innerHTML=req.responseText; } else { alert("There was a problem while using XMLHTTP:\n" + req.statusText); } } } req.open("GET", strURL, true); req.send(null); } } function getZone(client_name,location) { var strURL="display/getZone.php?client_name="+client_name+"&location="+location; var req = getXMLHTTP(); if (req) { req.onreadystatechange = function() { if (req.readyState == 4) { // only if "OK" if (req.status == 200) { document.getElementById('zonediv').innerHTML=req.responseText; } else { alert("There was a problem while using XMLHTTP:\n" + req.statusText); } } } req.open("GET", strURL, true); req.send(null); } } 

getLocation.php:

  <select style="width: 150px;" id="add-event-dialog-location" name="add-event-dialog- location" onchange="getZone(,this.value)"> -Location- <?php while($row = mysql_fetch_array($result)){ echo "".$row['location']."";} ?>  

getZone.php:

   -Zone-   

Prova a mettere le virgolette su Client1 – senza virgolette, javascript pensa che sia una variabile, e dal momento che non hai definito alcuna variabile chiamata Client1, stai ricevendo un errore. Mettendo le virgolette attorno ad esso diventa una stringa, che è ciò che si vuole passare a getZone ().

Prova a metterlo in getLocation.php:

Se uno qualsiasi dei nomi dei tuoi clienti ha delle virgolette, devi assicurarti di sfuggirli, vedi qui per sapere come fare: Passa una stringa PHP a una variabile JavaScript (e sfuggi alle nuove righe) .