2012-08-16 3 views
2

반환하는 JSON 객체를 가져 와서 PHP 쿼리에서 반환 된 내용을 표시하고 싶지만 괄호를 사용하여 인덱스 값에 액세스하면 한 번에 한 문자 만 표시됩니다. 기본적으로 각 인덱스는 쿼리의 각 행을 포함합니다. 이 특정 쿼리에는 두 개의 결과 (ID 및 파일 이름)가 있습니다. id와 name을 모두 JSON 배열의 하나의 인덱스로 가져 오려고합니다. 출력은 다음 표시 : 여기 PHP에서 배열로 JSON 반환

7 5.jpg 
8 7-mini.jpg 

내 코드는 ...

<script type="text/javascript"> 

    $(function(){ 
    $.ajax({          
     url: '<?php echo base_url().'jqueryDB/jquery';?>', 
     type:'POST',  
     dataType: 'json',  
     success: function(output_string){ 
       document.write(output_string[0]); 
     } 
    }); 

    }); 

을 지금이 디스플레이를 '7'대신 '7 5.jpg'의. 각 행을 하나의 인덱스에 저장하려면 어떻게해야합니까?

가 여기 내 PHP 파일입니다 :

$userID = $this->session->userdata('id'); 
    $query = $this->db->query('SELECT * FROM upload WHERE userID = '.$userID); 
    $num_rows = $query->num_rows(); 
    $val = $query->row_array();  

    $output_string = ""; 

    foreach ($query->result() as $row){ 
     $output_string .= $row->id; 
     $output_string .= " ".$row->name."<br />"; 
    } 

    echo json_encode($output_string); 
+0

dataType 대신 PARSE를 사용합니다 ... 'var obj = jQuery.parseJSON (your_var);' – Zak

답변

5
... 
$output = array(); 
foreach ($query->result() as $row) { 
    $output[] = $row->id . ' ' . $row->name; 
} 
echo json_encode($output); 
+0

도움을 주셔서 감사합니다 !! – KraigBalla

1

첫째, 당신은, 배열에 쿼리의 결과를 저장하기 위해 하지 문자열을합니다. json_encode을 호출하면 해당 배열을 가져 와서 JSON 인코딩 문자열로 변환합니다.

$output_array = array(); 

foreach($query->result() as $row) { 
    $output_array[] = array('id' => $row->id, 'name' => $row->name); 
} 

echo json_encode($output_array); 

전달하는 배열은 임의로 지정할 수 있습니다. json_encode은 배열의 구조를 기반으로 객체를 구조화합니다. 또한 브라우저에서 결과 문자열을보고 이와 같은 다차원 배열을 인코딩 할 때 JSON이 어떻게 보이는지 확인하는 것이 좋습니다. 자바 스크립트에서

, 당신은 난 그냥 떨어져 가고 있었다,

success: function(output_string){ 
    var obj = JSON.parse(output_string); 
    // This will iterate over all of the values in the return object 
    for(var i in obj) { 
     document.write(obj[i].name + '<br>' + obj[i].id); 
    } 
} 

다르게 반환 객체를 구성 주시기 바랍니다 ... 그것은 유용한 자바 스크립트 객체로 얻을 수 문자열을 구문 분석을해야하는지 당신은 당신의 질문에 놓았습니다.

jQuery에는 MIME 유형을 올바르게 지정하면 success 콜백 매개 변수가 자동으로 JSON 객체로 파싱됩니다. 더 자세한 정보는 jQuery documentation

+0

이것은 아마도 더 나은 대답 일 것입니다. :) 광산은 당신을 줄 끝까지 빨리 데려다줍니다. –

+0

@ David 나는 여전히 당신에게 upvote 줄거야 :) –

1

@ watcher의 대답이 나오기 전에이 글을 썼다. 아마도 당신이 원했던 것이지만, 이미 쓰여졌 기 때문에 나는 그것을 게시했다. 나는이 같은 @ 데이비드 펠스 솔루션을 수정하는 것 :

$output = array(); 
foreach ($query->result() AS $row) { 
    $output[$row->id] = array(); 

    foreach ($row AS $prop=>$value) { 
    $output[$row->id][$prop] = $value; 
    } 
} 

$output_json = json_encode($output); 

나는 일반적으로 PDO 내 DB에 접근하기위한 객체와 그 객체 대신 배열을 반환 사용합니다. 이 배열에 대한 작동합니다하지만 PHP뿐만 아니라 개체에서 작동합니다 믿습니다.

이것은 id라는 열을 반환하는 모든 쿼리와 함께 작동해야하며 분명히 id 부분은 $ id가 사용하려는 id 문자열/정수와 동일한 $ id로 대체 될 수 있습니다.

... 이제

다시 PHP에서 배열을 (내가 자바 스크립트 특히 익숙하지 않은 해요) 당신은 사용해야합니다 :

이의
// The TRUE returns it as an array rather than object. 
$output = json_decode($output_json, TRUE); 

많은 꽤 기본적인 당신이 이미 그것을 알고 있다고 상상해보십시오.그러나 제목 덕분에이 마지막 부분 인 json_decode 부분이 필요하다고 생각하게되었고 아마도이 질문을 한 다른 사람을 도울 것입니다.

관련 문제