我正在尝试使用数据库中的值自动完成我的视图中的字段,但似乎无法弄清楚出了什么问题....
在我看来,我有以下脚本:
$(document).ready(function() {
$(function() {
$( "#searchQuestion" ).autocomplete({
source: function(request, response) {
$.ajax({ url: "<?php echo site_url('contentmanagement/suggestions'); ?>",
data: { term: $("#searchQuestion").val()},
dataType: "json",
type: "POST",
success: function(data){
response(data);
}
});
},
minLength: 2
});
});
});
在我的内容管理控制器中,我有“建议”功能:
function suggestions() {
$this->load->model('onlinehelp');
$term = $this->input->post('term', TRUE);
if (strlen($term) < 2)
break;
$rows = $this->onlinehelp->GetAutocomplete($term);
$keywords = array();
foreach ($rows as $row)
array_push($keywords, $row->question);
echo json_encode($keywords);}
最后在我的模型中我有以下功能 -
function GetAutocomplete($term) {
$this->db->select('question');
$this->db->like('question',$term, 'both');
$query = $this->db->get('question');
return $query->result();
}
上面的查询相当于“SELECT question FROM question WHERE question LIKE%$ term%。
任何人都可以看到我的错误吗?
答案 0 :(得分:0)
您可能会因启用CSRF保护而导致500内部服务器错误。如果是这样,则每个POST
请求必须包含CSRF值。您有几个选择:
1。使用$this->input->cookie('your_csrf_name');
2。执行GET
请求而不是POST
。
在控制器中使用$this->input->get('term', TRUE);
。记得清理和验证价值。
3. 禁用CSRF保护。不建议。
答案 1 :(得分:0)
这适用于启用CSRF:
使用jquery cookie插件
<script type='text/javascript' src='<?php echo base_url(); ?>/js/lib/jquery.cookie.js'></script>
然后在你的自动完成事情上:
<script type="text/javascript">
$(document).ready(function() {
$(function() {
$("#searchQuestion").autocomplete({
source: function(request, response) {
$.ajax({ url: "<?php echo site_url('contentmanagement/suggestions'); ?>",
data: { term: $("#searchQuestion").val(), ci_csrf_token: $.cookie("ci_csrf_token") },
dataType: "json",
type: "POST",
success: function(data){
response(data);
}
});
},
minLength: 2,
focus: function( event, ui ) {
$("#searchQuestion").val(ui.item.term);
return false;
}
})
.data("autocomplete")._renderItem = function( ul, item ) {
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + item.term + "</a>" )
.appendTo( ul );
};
});
});</script>