2014-08-27 4 views
0

두 번째 독립적 인 드롭 다운 목록을 만들었습니다. 두 번째 목록의 옵션 ('sensor_list')은 첫 번째 목록 ('node_list')에서 어떤 옵션이 선택되었는지에 따라 달라집니다. 이를 위해 node_list에 리스너를 연결하고 옵션을 선택하면 'sensor_list'에 대한 데이터를로드하기 위해 ajax 요청을합니다. 두 목록의 모든 데이터는 동일한 데이터베이스에서로드됩니다.JSON 형식의 배열을 Ajax 요청에서 반환하는 방법은 무엇입니까?

아약스 요청에서 나는 데이터베이스의 '센서'테이블에 액세스하고 필요한 센서의 'Sensor_ID'와 'Sensor_name'을 얻습니다. 이제 내가 원하는 것은이 데이터를 요청의 '성공'기능으로 다시 전달하는 것입니다. 이 작업이 자동으로 수행됩니까? 함수에 인수를 전달해야합니까?

또한 나중에 사용하기 위해 반환 된 데이터가 JSON 형식이어야합니다. 이것이 어떻게 가능한지? 여기

은 PHP 코드 :

<?php 

$con = mysql_connect("localhost", "root", "") or die('connection not made'); 
$db = mysql_select_db('name_of_db', $con) or die('db not selected'); 

$query = "SELECT SensorID,Variable FROM sensors WHERE SensorID IN (SELECT SensorID FROM nodesensors WHERE NodeID=node_selected)"; 
$result = mysql_query($query, $con) or die('query not made'); 

$options = json_encode($result); 


?> 

'node_selected'I 요청과 함께 전달 변수이며 I는 처음리스트에서 선택된 노드의 ID이다.

자바 스크립트는 다음과 같습니다

if (node_selected!=0 & node_selected!=null){ 
       $.ajax({ 
        type: "POST", 
        url: "php/fetch_sensors.php", 
        data: node_selected, 
        success: function(options){ 
         ...//here I need the options to be in json format 
        } 
       }); 
      } 

'옵션'은 내가 요청에서 반환 할 데이터이며, 그들은 'sensor_list'에 대한 옵션이 될 것입니다.

미리 감사드립니다.

<?php 

$con = mysql_connect("localhost", "root", "") or die('connection not made'); 
$db = mysql_select_db('name_of_db', $con) or die('db not selected'); 

$query = "SELECT SensorID,Variable FROM sensors WHERE SensorID IN (SELECT SensorID FROM nodesensors WHERE NodeID=node_selected)"; 
$result = mysql_query($query, $con) or die('query not made'); 

$returnArray = array(); 
while($row = mysql_fetch_assoc($result)) { 
    $returnArray[] = $row; 
} 

$options = json_encode($returnArray); 

?> 

답변

0

는 다음에 PHP 코드를 변경해보십시오 그

mysql_fetch_assoc 기능을 사용할 수 있습니다 0 당신의 ajax 호출에:

$.ajax({ 
    type: "POST", 
    url: "php/fetch_sensors.php", 
    data: node_selected, 
    dataType: 'json', 
    success: function(options){ 
     ...//here I need the options to be in json format 
    } 
}); 
0

변경

$options = json_encode($result); 

echo json_encode($result); 

그리고 추가

에 :

+0

@Debflav 주석으로 처리하는 대신 답변을 편집 할 수 있습니다. –

+0

@Debflav 구문 오류가 있으면 대답을 편집 할 수 있다고 말하는 것만 알고 있습니다. 사용자는 귀하의 편집을보고 편집에 대해 감사 할 것입니다. –

+0

나는 그것을했지만 작동하지 않았습니다. 또한 나는 경고 ('여보세요'); 성공 함수 내부에 있지만 결코 나타나지 않았습니다. 그리고 'fetch_sensors.php'를 빈 페이지 만 별도로 실행하려했을 때. – DimitrisChousiadas

0

첫째, stop using ext/mysql if you can.

실제로 쿼리에서 결과를 가져 오지 않습니다.

while ($row = mysql_fetch_assoc($results)) { 
    $rows[] = $row; 
} 

그러면 실제로 응답에 배열을 내 보내야합니다.

echo json_encode($rows); 

JQuery와는 JSON을 감지하고 개체로 options를 사용할 수 있도록 자동으로 분석한다에 대한 꽤 똑똑하다. 자동으로 작동하지 않는 경우, 다음 중 하나를 수행 할 수 있습니다 :이 요청은 당신이 정말로 GET 대신의 방법으로 POST 사용해야 멱등 검색이

//php 
header("Content-type: application/json") 

//javascript 
data: node_selected, 
dataType: "json", 

// *or* 
success: function (options) { 
    options = JSON.parse(options); 
} 

마지막 때문이다.

관련 문제