2017-07-18 136 views
1

我想用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 
: 
[] 

我在干什么?

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

+0

有什么的console.log输出,如果你做无功的结果= response.data;没有json stringify? – Bdloul

+0

@Bdloud这是未定义的 –

+0

和一个console.log的回应? – Bdloul

回答

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> 
2

通在json encode $arr代替"data"=>$arr

echo json_encode($arr); 

becouse $arr也是一个数组