从PHP发送数组到AJAX响应
问题描述:
我想用ajax过滤尼泊尔地区的状态。我已经在MySQL数据库中获得了它们。从PHP发送数组到AJAX响应
我最初已经填充了区域选择框,没关系。
<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
}
?>
当我通过URL 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
:
[]
我在干什么?
答
你得到空数组因为你传递的是名字而不是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>
答
通在json encode $arr
代替"data"=>$arr
echo json_encode($arr);
becouse $arr
也是一个数组
有什么的console.log输出,如果你做无功的结果= response.data;没有json stringify? – Bdloul
@Bdloud这是未定义的 –
和一个console.log的回应? – Bdloul