javascript - 使用 php 和 javascript 处理动态下拉框
问题描述
我正在尝试创建一个动态下拉框,一旦做出选择就可以访问 MySQL。第二个框取决于第一个框的选择。我对javascript不太熟悉,但我遇到了一些似乎是我正在寻找但没有执行的代码,我不知道为什么。代码的第一部分是带有 javascript 的选项字段,第二部分是 dynamicdd.php。任何帮助都会很棒。谢谢你。
<tr>
<td>Country: </td>
<td>
<select name="Countrybox" onchange="getlocation(this.value)">
<option value="none"> Please Select </option>
<?php
$qry2 = "Select Country from Locations";
$populate = mysqli_query($conn, $qry2);
while ($run = mysqli_fetch_assoc($populate)){
echo "<option value='".$run['Country']."'>".$run['Country']."</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td>Location:</td>
<td>
<select name="Locationbox" id="locationbycountry">
<option> Select Above First </option>
</select>
</td>
</tr>
<script type="text/javascript">
function getlocation(locationarea) {
var xhttp = new XMLHttpRequest();
var url = "dynamicdd.php";
var data = new FormData();
data.append('SearchValue', locationarea);
xhttp.open('POST', url, true);
xhttp.send(data);
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
document.getElementById("locationbycountry").innerHTML = xhttp.responseText;
}
}
}
</script>
动态dd.php
<?php
if($_POST['SearchValue']){
$host = "localhost";
$username = "root";
$password = "";
$db = "Work";
$conn = mysqli_connect($host, $username ,$password, $db);
$choice = $_POST['SearchValue'];
$sql = "SELECT * FROM locations WHERE Country = '$choice'";
$result = mysqli_query($conn, $sql) or die(mysqli_error($conn));
while ($row = mysqli_fetch_assoc($result)){
echo "<option value='".$row['Location']."'>".$row['Location']."</option>";
}
}
?>
解决方案
您的 HTML 格式足够好,但您的 PHP 脚本中有错误。试试下面的代码来纠正一些简单的错别字:
<?php
if($_POST['SearchValue']){
$host = "localhost";
$username = "root";
$password = "";
$db = "";
$conn = mysqli_connect($host, $username ,$password, $db);
$choice = $_POST['SearchValue'];
$sql = "SELECT * FROM Locations WHERE country = '$choice'";
$result = mysqli_query($conn, $sql) or die('error');
while ($row = mysqli_fetch_assoc($result)){
echo "<option value='".$row['location']."'> ".$row['location']." </option>";
}
}
?>
此外,请务必进一步了解 Select2,它是标准选择框的一个非常受支持的替代品。https://select2.org/
推荐阅读
- jwt - 如何在 Keycloak 中拥有除 JWT 之外的另一种令牌格式?
- apache-nifi - Apache NiFi 进程间通信
- composer-php - 作曲家和共享主机
- c# - Linq 选择具有匹配子项的父/父记录
- java - 如何在 Java 中使用正则表达式捕获多次出现的组
- json - 如何测试 FeignClient 解组?
- shell - 如何从 SONAME 字段中提取共享库版本?
- python - numpy.where() 返回空数组而不是替换
- javascript - 使用多个 CKEditor 字段时,图像上传在 CKEditor 中不起作用
- r - 在R中的文本字段中提取句点之前的数字