2011-01-06 18 views
3

こんにちはイムその後、私は私のコントローラでデータベースからの私の出力をエコーし​​て、私のビューファイルに私はこれを行う:CodeIgniterのを使用してCodeIgniterのJSON

<script type="text/javascript"> 
$.getJSON('ajax/forumThreads', function(data) {   
alert(data.overskrift); 
}); 

</script> 

が、それは何も表示されてはいけない:S

私のモデルファイル

function forumList() 
{ 
    $this->db->select('overskrift', 'indhold', 'brugernavn', 'dato'); 
    $this->db->order_by('id', 'desc'); 
    $forum_list = $this->db->get('forum_traad'); 

    if($forum_list->num_rows() > 0) 
    { 
     return $forum_list->result(); 
    } else { 
     return false; 
    } 
} 

私のコントローラ

function forumThreads() { 

    $this->load->model('ajax_model'); 
    $data['forum_list'] = $this->ajax_model->forumList(); 

    if ($data['forum_list'] === true) 
    { 
     echo json_encode($data['forum_list']); 
     $this->load->view('includes/footer', $data); 
    } else { 
     return false; 
    } 


} 
+0

私のためにテストする良い方法はただ試してみて、コントローラ機能」を訪問してきました野生の "ブラウザに入力し、出力が何であるかを確認するだけで、あなたが期待している出力を得ていることが分かります。 – jondavidjohn

+0

'$ this-> load-> view( 'includes/footer'、$ data);を' json_encode'の後に削除します。 JSONデータの前後には何も置くことはできません。 –

答えて

3

$forum_list->result()は結果の配列を返します。

1行のみを使用する場合は$forum_list->row()を使用してください。そうでない場合はjavascriptですべての行をループする必要があります。

$.each(data, function(i,v){ 
    alert(v.overskrift); 
}); 

編集:JSONを出力するときは、前後に何も印刷しないでください。 json_encodeの後に$this->load->view('includes/footer', $data);を削除する必要があります。また、コントローラは何も返しません。

編集2:if ($data['forum_list'] === true)if ($data['forum_list'] !== false)に置き換えます。 ===は型を比較し、配列はブール値ではありません。

+0

okay私があなたが言ったすべてのことをやったことがあります。コントローラーを参照すると何かが出力されますが、それは警告です:未定義:S – ole

+0

@ole:コントローラーの出力は何ですか? –

0

モデル:

function forumList() 
{ 
    $this->db->select('overskrift', 'indhold', 'brugernavn', 'dato'); 
    $this->db->order_by('id', 'desc'); 
    $forum_list = $this->db->get('forum_traad'); 

    if($forum_list->num_rows() > 0) 
    { 
     return $forum_list->result_array(); 
    } else { 
     return false; 
    } 
} 

コントローラー:

function forumThreads() { 

    $this->load->model('ajax_model'); 
    $data['forum_list'] = $this->ajax_model->forumList(); 

    if ($data['forum_list'] !== false) { 
     echo json_encode($data['forum_list']); 
    } 
} 
0

これを試してみてください:

//works only with php 5.3 
echo json_encode($data['forum_list'], JSON_FORCE_OBJECT); 
関連する問題