2014-06-11 60 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");