Я программирую простую форму с динамически зависимым выбором.Есть два файла.Один из них - это php-файл с html, javascript и php внутри, второй - это php-файл, который получает данные для второго выбора и отправляет их обратно в формате json.В первом (и основном) файле у меня есть форма с двумя полями выбора.Первое поле для провинции, второе для городов.Данные находятся в базе данных MySQL, двух таблицах, table_provinces для провинций (103 строки) и table_towns для городов (8000 строк).Обычно подключаются к БД как обычно, а также ссылаются на jquery, используя ссылку javascript.Сначала я получаю опции провинций для первого поля выбора, используя php для получения значений из table_provinces базы данных.Затем с помощью JavaScript " on ('change', function () {здесь я использую ajax ...}) " я передаю выбранное значение, используя ajax, в php-файл, который может извлечь города из table_towns и датьобратно (в формате json) значения, чтобы заполнить второе поле выбора.Javascript правильно получает выбранное значение из первого поля выбора (я использовал оповещение, чтобы узнать это), но больше ничего не происходит.Так что это код.
Ссылка на jquery:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
HTML сначала выберите поле:
<form method="post" action="usemychoice.php">
<select id="province" name="province" color="white">
<option value="" selected>Select a province</option>
Вот как я заполняю первое поле выбора:
<?php
$sql = "SELECT * FROM table_provinces";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo "<option value='".$row['prov']."'>".$row['extended_province']."</option>";
}
} else {
echo "Error: ..........";
}
?>
И после закрытия этого поля с помощью / выбрать у меня есть этот код, чтобы получить значения для заполнения с названиями городов второе поле выбора:
<script type="text/javascript">
$(document).ready(function(){
$('#province').on('change',function(){
var provinceID = $(this).val();
if(provinceID){
window.alert("ok you've chosen the province "+provinceID);
$.ajax({
type:'POST',
url:'get_towns.php',
data: 'prov='+provinceID,
success:function(html){
$('#town').html(html);
}
});
}else{
$('#town').html('<option value="">Please select the province first</option>');
}
});
});
</script>
Это код get_town.php:
<?php
//*****after a require to the connection db routine"
if(!empty($_POST["prov"])) {
$sql = "SELECT * FROM table_towns WHERE prov LIKE '%" .$_POST['prov']."%'";
$result = mysqli_query($conn, $sql);
$json = [];
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
$json[$row['prov']] = $row['town'];
} else {
echo "Error: .................";
}
echo json_encode($json);
}
?>
Наконец, у меня есть HTML-код:
<select id="town" name="town" color="white">
<option value="" selected>Select province first</option>
В конце концов, в коде что-то не так, потому что я не получаю никаких данных из get_town.php, чтобы заполнить второе поле выбора, и так как яя не видел window.alert, который я поместил туда, чтобы проверить текущее выполнение (вы не видите его в приведенном здесь коде), похоже, он не выполняется.Любая помощь?