我正在尝试使用ajax过滤尼泊尔的州,区域。我在MySQL数据库中得到了它们。
我最初填充了区域选择框,没关系。
<select class="district col-md-3 center-block" id="zone">
<?php
while ($res = mysqli_fetch_assoc($result_zones)) {
echo "<option value='".$res['name']."'>".$res['name']."</option>";
}
?>
</select>
现在我正在尝试的是当用户更改区域时,我需要从区域表中与该区域关联的所有区域。
我所做的就是:
调用Ajax
<script>
$(document.body).on("change","#zone",function(){
//console.log(this.value);
$.ajax({
dataType : 'json',
async: false,
url:'process.php?zone_id=' + this.value,
complete: function (response) {
var result = JSON.stringify(response.data);//parsing status from response received from php
console.log(result);
}
});
});
</script>
process.php
<?php
if (isset($_GET['zone_id'])) {
$arr =array();
$zone_id=$_GET['zone_id'];
$i=0;
$result = mysqli_query($dbconfig,"SELECT * FROM districts WHERE zone_id = '$zone_id'");
while ($row = mysqli_fetch_assoc($result)) {
$arr[$i] = $row;
$i++;
}
// preparing correct format for json_encode
header('Content-type: application/json');
echo json_encode(array('data' => $arr)); //sending response to ajax
}
?>
当我浏览网址http://localhost/nepal-locations/process.php?zone_id=8
时,我正在获取数据,如下所示:
{"data":[{"id":"42","name":"Mustang","zone_id":"8"},{"id":"43","name":"Myagdi","zone_id":"8"},{"id":"44","name":"Parbat","zone_id":"8"},{"id":"45","name":"Baglung","zone_id":"8"}]}
但我在控制台中将数据清空。
{data: []}
data
:
[]
我做错了什么可能?
答案 0 :(得分:2)
传递json encode $arr
代替"data"=>$arr
echo json_encode($arr);
因为$arr
也是一个数组
答案 1 :(得分:1)
您正在获取空数组,因为您传递的是名称而不是ID
更改您的<select>
,如下所示:
<select class="district col-md-3 center-block" id="zone">
<?php
while ($res = mysqli_fetch_assoc($result_zones)) {
echo "<option value='".$res['id']."'>".$res['name']."</option>"; //<-----Add id instead of name
}
?>
</select>