3

Hello im using codeigniter and then i echo out my output from the database in my controller and then in my view file i do this:

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

</script>

but it dont show anything :S

my model file

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;
    }
}

my controller

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;
    }


}
treeface
  • 13,270
  • 4
  • 51
  • 57
ole
  • 31
  • 1
  • 1
  • 2
  • a good way to test for me has been to just try and visit the controller function "in the wild" just typing it in the browser and see what the output is, just so you know you are getting the output you expect. – jondavidjohn Jan 06 '11 at 16:17
  • Remove `$this->load->view('includes/footer', $data);` after the `json_encode`. JSON data cannot have anything before or after it. – gen_Eric Jan 06 '11 at 16:19

3 Answers3

3

$forum_list->result() returns an array of results.

If you only want 1 row, use $forum_list->row(), otherwise in the javascript, you'll need to loop through all the rows.

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

EDIT: When outputting JSON, do not print anything before or after. You need to remove $this->load->view('includes/footer', $data); after the json_encode. Also, controllers don't return anything.

EDIT 2: Replace if ($data['forum_list'] === true) with if ($data['forum_list'] !== false). The === compares type, and an array is not a boolean.

gen_Eric
  • 223,194
  • 41
  • 299
  • 337
0

Model:

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;
    }
}

Controller:

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']);
    }
}
fire
  • 21,383
  • 17
  • 79
  • 114
0

Try this:

//works only with php 5.3
echo json_encode($data['forum_list'], JSON_FORCE_OBJECT);
Diablo
  • 3,378
  • 1
  • 22
  • 28