2014-06-11 57 views
0

我想发送一个查询结果作为JSON,但是当我使用console.log它显示空的结果。通过JSON发送PHP查询结果

PHP代码:

function getCountries($countries){ 
    $sql = mysqli_query($connection, 'SELECT DISTINCT id, type, level, code, name, durations FROM destinations where gateway_code="YBG" ORDER BY name'); 
     while($row = mysqli_fetch_array($sql)) 
     { 
     echo json_encode($row); // I have doubt here, i want to send complete Query result as JSON 


     } 
     exit(); 
    } 

    $abc = $_POST['countries']; 
    getCountries($abc); 

阿贾克斯 [发送数据工作正常,但响应不工作):

$(document).ready(function(){ 
    var $leavingFrom = $('#select-leaving-from'); 
    $leavingFrom.on('change', function() { 
    var $city_code = this.value; 
    loadDepartures($city_code); 
}); 
}); 


function loadDepartures($cityname){ 
var dataString = $cityname; 
$(document).ready(function(){ 
jQuery.ajax({ 
type: "POST", 
url: 'get_data.php', 
datatype: 'json', 
data: {'countries': dataString}, 
success: function (output, textStatus) { 
       console.log(output); 
     } 
    }); 
}); 
} 

唯一的问题是,我无法发送JSON数据(查询结果)返回到Ajax。需要建议

回答

1

你正在输出无效的JSON(好吧,有效的JSON,多次,创建一个无效的JSON字符串,如果有意义的话)。你需要建立整个阵列,然后JSON编码它:

$rows = array(); 
while($row = mysqli_fetch_array($sql)) 
{ 
    $rows[] = $row; 
} 
echo json_encode($rows); 
exit(); 
0

这是我该怎么做的。

$json = []; 
//Query here. 
while ($result = mysqli_fetch_array(//query)) 
{ 
    $tmp = array(
      'Prop1' => $result['Prop1Value'], 
      'Prop2' => $result['Prop2Value'], 
      'Prop3' => $result['Prop3Value']); 
    array_push($json, $tmp); 
} 

$jsonString = json_encode($json); 
echo $jsonString; 

我使用的非常通用的布局。为你的数据库列和值交换'Props'。然后当你使用

outputArray = JSON.parse(output); 

你将会得到一个值的数组,可以用解析引用,像这样

myProp1 = outputArray[ 0 ].Prop1 ; 

希望这有助于!!!!

编辑:您使用$结果引用支柱值,协调与您的数据库表列,如果列被称为“资本”,你将与

'Capital' => $result['Capitals'], 

引用它,做你的其他列在前后相同的方式。

0

这可能是一个头问题,请尝试更新了头:

header("Content-Type: application/json");