我一直致力于级联下拉(使用php / Ajax),其中第二个下拉值取决于第一个,我已经完成了应该是必要的但是没有&# 39;似乎工作,我将在下面发布我的代码,并将欣赏一个良好的眼睛或一些有用的提示:
这是我的第一个下拉列表,其中包含从数据库获取的正确位置:
<?php
$sql1 = "SELECT location_Id,location_Name FROM locations ";
$result1 = $conn->query($sql1); ?>
<?php while ($row1= mysqli_fetch_array($result1)) { ?>
<option value="<?php echo $row1['location_Id'] ; ?>"> <?php echo $row1['location_Name'] ; ?> </option>
<?php } ?> </select>
我的第二个下拉列表需要首先填充:
我的剧本:
<script type="text/javascript">
function get_states() { // Call to ajax function
var location_Id = $('#location').val();
var dataString = "location_Id="+location_Id;
$.ajax({
type: "POST",
url: "http://192.168.0.10/skylite/gethosp", // Name of the php files
data: dataString,
success: function(html)
{
$("#hospital").html(html);
}
});
}
</script>
我从Ajax的请求中调用的其他php页面/代码:
<?php
$conn = new mysqli($servername, $username, $password, $dbname);
if(isset($_POST['location_Id'])) {
$sql = "select * from hospitals where location_Id=".mysqli_real_escape_string($conn, $_POST['location_Id']);
$res = mysqli_query($conn, $sql);
if(mysqli_num_rows($res) > 0) {
echo "<option value=''>------- Select --------</option>";
while($row = mysqli_fetch_object($res)) {
echo "<option value='".$row['hospital_Id']."'>".$row['hospital_Name']."</option>";
}
}
} else {
header('http://192.168.0.10/skylite/Claims');
}
?>
问题是当我从第一个下拉列表中选择一个位置时,正在使用正确的变量和id发送ajax请求(onclick="get_states();"
),但仍未填充第二个下拉列表
答案 0 :(得分:0)
您已经在onchange事件上执行此操作而不是单击。
onclick="get_states()";
替换
onchange="get_states()";
希望这会帮助你。
答案 1 :(得分:0)
根据您在评论中提到的错误,错误在您的PHP文件中。所以你得到html
的结果是PHP错误页面或者开头或输出错误信息,如果你有一个完整的页面作为答案,这就是原因。
原因是因为您正在使用mysqli_fetch_object
将每行作为PHP对象而不是数组。
然后你应该访问像这样的属性
echo "<option value='".$row->hospital_Id."'>".$row->hospital_Name."</option>";