codeigniter JSON
您好我使用codeigniter,然后我在我的控制器中回显我的数据库输出,然后在我的视图文件中我这样做:
$.getJSON('ajax/forumThreads', function(data) { alert(data.overskrift); });
但它没有显示任何东西: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; } }
$forum_list->result()
返回一个结果数组。
如果你只想要1行,请使用$forum_list->row()
,否则在javascript中,你需要循环遍历所有行。
$.each(data, function(i,v){ alert(v.overskrift); });
编辑:输出JSON时,不要在之前或之后打印任何内容。 你需要删除$this->load->view('includes/footer', $data);
在json_encode
。 此外,控制器不返回任何内容。
编辑2:用if ($data['forum_list'] !== false)
替换if ($data['forum_list'] === true)
if ($data['forum_list'] !== false)
。 ===
比较类型,数组不是布尔值。
模型:
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']); } }
试试这个:
//works only with php 5.3 echo json_encode($data['forum_list'], JSON_FORCE_OBJECT);