Php 从属下拉列表未显示下拉列表数据
我试图创建一个相关的下拉列表,人们可以根据南、北、东、西等地区选择特定的商店。 我创建了一个数据库,其中有4列,如id、region\u id、region、store name。我有两个下拉列表,一个显示区域,另一个显示商店名称。这两个函数都是从数据库中调用的。区域下拉列表显示所有区域。但存储名称为空。 我正在尝试按区域id获取存储。如果区域id=='',则它将在区域id获取匹配项的位置调用select查询。如果我做错了什么,我需要帮助。这就是为什么我没有得到结果 代码: dashboard.phpPhp 从属下拉列表未显示下拉列表数据,php,ajax,drop-down-menu,Php,Ajax,Drop Down Menu,我试图创建一个相关的下拉列表,人们可以根据南、北、东、西等地区选择特定的商店。 我创建了一个数据库,其中有4列,如id、region\u id、region、store name。我有两个下拉列表,一个显示区域,另一个显示商店名称。这两个函数都是从数据库中调用的。区域下拉列表显示所有区域。但存储名称为空。 我正在尝试按区域id获取存储。如果区域id=='',则它将在区域id获取匹配项的位置调用select查询。如果我做错了什么,我需要帮助。这就是为什么我没有得到结果 代码: dashboard.
<tr>
<th>
<label for="inputPassword3" class="col-md-5 control-label">Date</label>
<div class="col-md-6">
<input type="date" class="form-control c-square c-border-2px c-theme" id="inputEmail3-55" placeholder="" name="date">
</div>
</th>
<th>
<div class="form-group">
<label for="inputPassword3" class="col-md-3 control-label">Region</label>
<div class="col-md-6">
<select class="form-control c-square c-border-2px c-theme" name="region" id="region">
<?php
$sql = mysqli_query($link, "SELECT DISTINCT region FROM store_details");
while ($row = $sql->fetch_assoc()){
echo "<option value=\"owner1\">" . $row['region'] . "</option>";
}
?>
</select>
</div>
</div>
</th>
<?php $region_id =(isset($_POST['region_id']));{
echo $region_id;
}?>
<th>
<div class="form-group">
<label for="inputPassword3" class="col-md-6 control-label">Store Name</label>
<div class="col-md-6">
<select class="form-control c-square c-border-2px c-theme" name="store_details" id="states-list">
<option value=''>Select Store</option>
</select>
</div>
</div>
</th>
</tr>
SerachRegion.php
<?php
require_once('DbConnection.php');
if(isset($_POST['region_id'])){
$region_id =$_POST['region_id'];
}
if($region_id!=''){
$states_result = $conn->query('select * from store_details where region_id='.$region_id.'');
$options = "<option value=''>Select store</option>";
while($row = $states_result->fetch_assoc()){
$options .= "<option value='".$row['region_id']."'>".$row['name']."</option>";
}
echo $options;
}
?>
Ajax代码:
<script>
$('#region').on('change', function(){
var region_id = $(this).val();
$.ajax({
type: "POST",
url: "SearchRegion.php",
data:{region_id:region_id},
success: function(result){
$("#states-list").html(result);
}
});
});
</script>
我已经检查了DbConnection.php文件,它工作正常。问题是:
商店名称下拉列表为空。我没有收到任何错误。在成功调用中检查结果是否为空,然后将结果附加到id 第一次更改时,请清除最旧的状态,以便新值出现在该位置
<script>
$('#region').on('change', function(){
$("#states-list").html(''); // empty the currnt values
var region_id = this.value;
$.ajax({
type: "POST",
url: "SearchRegion.php",
data:'region_id='+region_id,
success: function(result){
$("#states-list").append(result); // then append new values
}
});
});
</script>
在PHP函数中,检查post值的isset。如果您检查isset,它将仅为该变量返回true或false 例如:
$expected_array_got_string = 'somestring';
var_dump(isset($expected_array_got_string['some_key']));
输出将是:
bool(true)
因此,您需要更改变量声明,如下所示:
if(isset($_POST['region_id'])){
$region_id =$_POST['region_id'];
}
在Ajax中,您需要获得以下类型的值:
$('#region').on('change', function(){
var region_id = $(this).val();
$.ajax({
type: "POST",
url: "SearchRegion.php",
data:{region_id:region_id},
success: function(result){
$("#states-list").html(result);
}
});
});
编辑:
这是从我这里开始测试的:示例代码是
test1.php
change.php
在ajax调用中试试这个你有$'region'。在'change'上,函数{,但是我没有看到id=region,只有name=regionregion是第一个region下拉列表的id。你检查过你的浏览器控制台,看你的ajax是否启动了吗?嘿,我试过这种方法。但是它不起作用,你的回答也不起作用。运气不好。我还遗漏了什么。我真的很想知道你在SearchRegion.ph中的帖子值是多少p?再次在SearchRegion.php文件中打印post值不走运。下拉列表为空白。我收到错误:未定义变量:isset和致命错误:函数名必须是以下内容的字符串:if$isset$\u post{$region\u id=$\u post['region\u id'];}在ajax中尝试此变量声明:var region\u id=$'region'。查找:selected.text;
<html>
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
</html>
<select id="_city">
<option value="1">
ONE
</option>
<option value="2">
TWO
</option>
<option value="3">
THREE
</option>
</select>
<select name="store_details" id="states-list">
<option value=''>Select Store</option>
</select>
<script>
$(document).ready(function () {
$('#_city').on('change', function(){
var region_id = this.value;
$.ajax({
type: "POST",
url: "change.php",
data:{region_id : region_id},
success: function(result){
$("#states-list").html(result);
}
});
});
});
</script>
<?php
if(isset($_POST['region_id'])){
$region_id =$_POST['region_id'];
echo '<option value="'.$region_id.'">'.$region_id.'</option>' ;
exit;
}
?>