ole
ole

Reputation: 31

codeigniter JSON

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


}

Upvotes: 3

Views: 12169

Answers (3)

Diablo
Diablo

Reputation: 3418

Try this:

//works only with php 5.3
echo json_encode($data['forum_list'], JSON_FORCE_OBJECT);

Upvotes: 0

gen_Eric
gen_Eric

Reputation: 227260

$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.

Upvotes: 3

fire
fire

Reputation: 21531

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']);
    }
}

Upvotes: 0

Related Questions