我在使用ajax post函数从控制器返回数据时遇到问题。这里发生的是用户将输入一个样式编号,将该编号提交给控制器。控制器获取提交的值,查询数据库并将结果返回给控制器,然后控制器返回一个数组,然后我将其编码为json。但我一直得到500内部服务器错误???
这是我的控制器
//return schools based on style id
public function search() {
$input = json_decode($this->input->post('obj'));
$style_id = $input['style_id'];
$parent_id = $input['parent_id'];
$data = array();
if ($q = $this->page_model->search_results($style_id, $parent_id)) {
$data = $q;
}
echo json_encode($data);
}
这是我的模特
//get all entries
function search_results($style_id, $parent_id) {
$options = array(
'Style' => $style_id,
'Parent_ID' => $parent_id
);
$this->db->select('*');
$this->db->from('pages');
$this->db->join('entry', 'pages.Page_ID = entry.Parent_Page_ID', 'inner');
$this->db->where($options);
$q = $this->db->get();
if ($q->num_rows() > 0) {
return $q->result();
}
}
这是我的javascript
//dress style search
$($searchBtn).click(function(event) {
var style_id,
parent_id,
obj = {};
//get the value of the input fields
searchVal = event.currentTarget.previousSibling.value;
parentID = event.currentTarget.parentElement.childNodes[3].value;
//The object to be passed to the controller
obj = { 'style_id' : searchVal, 'parent_id' : parentID };
//POST the values in json notation, return the search results in json notation
$.post(base_url + 'index.php/page/search',
obj,
function(data) {
console.log(data);
},
'json');
return false;
});
BASE_URL = HTTP://本地主机:8888 / lexsreg
BTW - 如果我注释掉返回false,我会从我的控制器中回收一个json字符串。
提前致谢!
答案 0 :(得分:1)
您必须包含csrf令牌。有两种方法可以做到这一点,正如这两篇博客中所解释的那样。
答案 1 :(得分:0)
嗯,第一步是确保你已加载page_model
。然后我会确保你在where子句中找到正确的列 - 你需要通过<table-name>.
识别它们吗?
然后基本的CI调试从log_message开始:调用log_message('DEBUG', $this->input->post('obj'));
,然后调用log_message('DEBUG', json_decode($this->input->post('obj')));
。