javascript - PHP-jquery-ajax 动态依赖选择 - 难度
问题描述
我正在编写一个带有动态相关选择的简单表单。有两个文件。一个是一个php文件,里面有html、javascript和php,第二个是一个php文件,用于获取第二个选择的数据并以json格式发送回来。在第一个(也是主)文件中,我有一个带有两个选择字段的表单。第一个字段是省,第二个是城镇。数据在一个 MySQL 数据库中,有两个表,table_provinces 用于省(103 行)和 table_towns 用于城镇(8000 行)。通常像往常一样连接到数据库,并使用 javascript 链接链接到 jquery。首先,我获取第一个选择字段的省份选项,使用 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: ..........";
}
?>
在使用 /select 关闭该字段后,我有此代码来获取用于填充城镇名称的第二个选择字段的值:
<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检查正在进行的执行(您在此处发布的代码中看不到它),似乎没有执行。有什么帮助吗?
解决方案
url:'get_towns.php',
不是get_town.php
没有复数吗?
推荐阅读
- docker-compose - 当 nexus 具有不同的根时,将 nexus 作为 docker 注册表
- javascript - 如何在 D3 的 xScale 中显示日期和时间
- hibernate - 为什么 merge() 返回副本对象?
- flutter - Flutter - showDatePicker 将一周的第一天设置为星期一
- spring - 百里香+春天。使用对象方法而不是表单中的另一个块
- c - 如何确保二维数组在内存中连续分配
- c# - 使用无服务器和 AWS API 网关从 ASP .Net Core MVC 返回二进制数据
- elasticsearch - java - 如何使用java Hight level rest客户端在弹性搜索中执行范围查询?
- python - 我已经编写了合并排序的代码。但是我无法返回排序值如何返回排序列表
- github-api - 通过存储库调度事件触发时如何在工作流中指定 event_type