2016-06-27 4 views
-1

PHP와 MySQL을 사용하여 일부 콘텐츠를 교체하고 있습니다. 클릭 핸들러는 AJAX 요청을 PHP 스크립트에 보내 쿼리를 수행 한 다음 결과를 인코딩하여 JSON 객체로 인쇄합니다.JQuery AJAX 요청에서 JSON 응답을 사용하려면 어떻게해야합니까?

모두 작동하는 것처럼 보이지만 가장 바보 같은 것에 붙어있는 것처럼 보입니다. 자바 스크립트 변수에 개별 값을 설정하는 것처럼 실제로 결과를 사용하는 방법을 생각해 낼 수 없습니다.

편집 : 콘솔에 출력 할 특정 값을 얻기 위해 시도한 몇 가지 추가 사항을 추가했습니다.

편집 : 올바른 구문을 찾았

response[0].foo 

자바 스크립트 :

var listId = $(this).children('.hidden-id').html(); 

     var options = new Object(); 
     options.data = listId; 
     options.dataType = 'json'; 
     options.type = 'POST'; 

     options.success = function(response) { 
      console.log(response[0].foo); 
     }; 

     options.url = './inc/change_list.php'; 

     $.ajax(options); 

PHP 스크립트 :

$list_id = $_POST['list_id']; 
    $q = "SELECT id, title, description, position FROM items WHERE list_id=$list_id ORDER BY position ASC"; 
    $r = mysqli_query($dbc, $q); 
    if (mysqli_num_rows($r) > 0) { 

     $result = array(); 
     while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { 
      $add_result = [ 
       'id' => $row['id'], 
       'title' => $row['title'], 
       'description' => $row['description'] 
      ]; 
      $result[] = $add_result; 
     } 
     $result = json_encode($result); 
     echo $result; 

    } else { 
     echo '{"result":"failure"}'; 
    } 
+0

필요를 문제가 링크 된 대답은 당신이 당신의 배열을 반복하고 작업해야 – charlietfl

+0

객체와 배열로 작업하는 방법에 대한 좋은 자습서를 제공합니다 그렇지 않으면 무엇에 대한 더 많은 구체적으로 반복의 각 객체 인스턴스 – charlietfl

+0

for 루프를 사용하십시오. –

답변

-3

JSON 응답은 자동으로 자바 스크립트 객체로 해석됩니다. 그래서 당신은 다만 할 수 있습니다

options.success = function(response) { 
    console.log(response.foo); // logs "bar" 
    // or 
    var foo = response.foo; // foo now holds "bar" as it's value 
}; 
+0

내 콘솔 (파이어 폭스 파이어 버그)에서 그냥 시도해 보았습니다. –

+0

'response'는 배열 객체가 아닙니다 – charlietfl

+0

@RuairiGann'response.data.foo'는 어떨까요? –

관련 문제