используя Ajax с 3 последовательными выпадающими списками в зависимости от eachother

мир с вами Все, я новичок в использовании Ajax, проблема в том, что у меня есть 3 выпадающих списка, связанных с базой данных, первая – это «имя», а вторая – «возраст», а третья – страна"! поэтому я подключился к базе данных и извлек данные из него в первом списке «имя», а затем с помощью Ajax, я успешно получил соответствующие данные после выбора любой опции первого списка и поместил их во второй список, называемый «возраст», , проблема в том, что, когда я использую очень точный способ со вторым списком, названным «age», чтобы получить соответствующие данные в третий список, называемый «страна», он не работает! так что, пожалуйста, помогите мне cuz, я использую этот пример, чтобы изучить Ajax, а затем примениться к более крупному реальному проекту! вот код: – во-первых, страница 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_array($result)){ echo"<option value ='".$row[0]."'> '".@$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> 

теперь, страница для первого вызова Ajax: –

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

Теперь со страницей второго вызова Ajax для третьего меню перетаскивания:

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

так как вы видите, вот код, и, конечно, я подключен к базе данных через страницу с именем «config.php», поэтому я хочу, чтобы вы помогли мне решить эту проблему и получить данные из базы данных в третью капли вниз "страна". Заранее спасибо!

Хорошо, Муса здесь редактирование: –

 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(); } 

а также :-

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

Я не получаю никаких сообщений об ошибках, я уверен, что ваш вопрос прав, но это решение не работает, к сожалению! большое вам спасибо за помощь 🙂

Вы не отправили имя во втором запросе ajax, но вам нужно его для запроса к базе данных, поэтому вам нужно будет отправить имя, а также возраст в запросе ajax. Также вы не дезинфицируете свой вход, вы всегда должны проверять ввод пользователя, я также предлагаю не использовать mysql_ *

Это расширение устарело с PHP 5.5.0 и будет удалено в будущем. Вместо этого следует использовать расширение MySQLi или PDO_MySQL . См. Также MySQL: выбирая руководство по API и связанные с ним FAQ для получения дополнительной информации.

 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']; ... }