从php发送数组到AJAX响应

时间:2017-07-18 04:20:21

标签: php mysql ajax

我正在尝试使用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
:
[]

我做错了什么可能?

更新 输出console.log(响应) enter image description here

2 个答案:

答案 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>