2013-11-28 81 views
0

我試圖在我的視圖中打印json_encode。但它始終顯示爲json對象。我想在HTML格式的輸出中打印下面的對象。我只是實現了一個像分頁結果更多按鈕一樣的Twitter。有人能幫我嗎。打印Codeigniter中的json_encode對象從控制器返回的視圖

這裏是我的控制器:

function get_results($offset) 
    { 
    $this->load->model('my_model'); 
    $this->data['latest_messages'] = $this->my_model->searchresult($offset); 
    $this->output->set_header('Content-Type: application/json; charset=utf-8'); 
    echo '<script> var data = ' . json_encode($this->data['latest_messages']). ' </script>'; 

    } 

這是我的觀點:

<script type="text/javascript"> 
google.load("jquery", "1.10.1"); 
</script> 
<script type="text/javascript"> 
    $(document).ready(function(){ 
    var num_messages = <?=$num_messages?>; 
    var loaded_messages = 0; 
    $("#more_button").click(function(){ 
    loaded_messages += 10; 
    $.get("<?php echo $base_url;?>" + "controller/get_results/" + loaded_messages,   function(data){ 
       $("#main_content").append(data); 

      }); 

      if(loaded_messages >= num_messages - 10) 
      { 
       $("#more_button").hide(); 
      } 
     }) 
    }) 
</script> 
<link rel="stylesheet" href="<?=base_url();?>css/main.css" type="text/css" /> 
    </head> 
    <body> 
    <?php $this->load->view('includes/topbar'); ?> 
    <?php $this->load->view('includes/menu'); ?>  
    <?php $this->load->view('includes/left'); ?>   

    <div id="contentwrap"> 
    <div id="content"> 

     <div id="main_content"> 
       <?php 
       foreach($this->data['latest_messages'] as $message) 
       { 
        echo $message->email . ' - ' . '<br />'; 
       } 
       ?> 
     </div> 
    <div id="more_button"> 
     More 
    </div> 
    </div>  
    </div> 
    <?php $this->load->view('includes/right'); ?> 
    <?php $this->load->view('includes/foot'); ?> 

當我點擊更多的鏈接,結果被加載不錯,但我想要顯示結果在一個很好的格式化輸出,而不是json對象,如下所示

[ 
{" id":"11"," group_fk":"1"," email":"[email protected]"," username":"test1"}, 
{" id":"12"," group_fk":"1"," email":"[email protected]"," username":"test2"}, 
{" id":"13"," group_fk":"1"," email":"[email protected]"," username":"test3",}, 
] 
+0

'PHP數組/變量轉移到'JavaScript數組/ variable'時json_encode'效果最好。由於您對'json_encode'結果使用'echo',因此它將在頁面上輸出。所以,也許你應該將其回顯成一個javascript數組,並用它來輸出對象? –

+2

這裏是你的代碼:'echo json_encode($ this-> data ['latest_messages']);',這就是它顯示的原因。您需要將它分配給一個js變量。如:'echo''而不是使用'oVal.id','oVal.group_fk','oVal.email'和'oVal.username'在需要的地方通過javascript輸出。 –

+0

那麼我需要刪除'json_encode'的echo嗎? – vkrams

回答

0

好的,所以你會得到json格式的結果。你只需要操縱你的Ajax回報處理這些結果,然後將它們添加到div:

$.get("<?php echo $base_url;?>" + "controller/get_results/" + loaded_messages, 
    function(data){ 
     var data = JSON.parse(data); 
     var output = ""; 
     for (var i = 0; i < data.length; i++) { 
      output += data[i].email + ' - <br />'; 
     } 
     $("#main_content").append(output); 
    } 
); 
+0

嘿swatkins。謝謝爲你的答案。當我點擊更多按鈕。它添加數據爲'undefined - undefined - undefined - undefined -' – vkrams

+0

你可以在'function(data){'line下面添加一個'console.dir(data);'告訴我輸出是什麼? – swatkins

+0

輸出沒有變化。它的相同'undefined' – vkrams

相關問題