2014-06-11 3 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; 

꽤 일반적인 레이아웃입니다. DB 컬럼과 값에 대한 'Props'를 교환하십시오. 그리고 당신이

outputArray = JSON.parse(output); 

사용할 때이 도움이 너무

myProp1 = outputArray[ 0 ].Prop1 ; 

희망 같은 분석에 참조 할 수있는 값으로 배열을 얻을 것이다 !!!!

편집 : 당신이 열이 '수도는'당신은 당신의 다른 열을

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

그것을 참조하고 할 것 호출 된 경우 $ 결과와 참조 소품 값이, 당신의 DB 테이블 컬럼과 협력 전후에 같은 방식으로.

0

이 수도, 당신의 헤더 업데이트 헤더 문제를 시도 할 수 :

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