我正在尝试使用jQuery UI和CodeIgniter 2实现一个简单的自动完成脚本,但我的模型一直告诉我有一个未定义的变量,所以我不知道我的设置是否正确。
我的观点
$(function() {
$("#txtUserSuburb").autocomplete({
source: function(request, response){
$.ajax({
url: "autocomplete/suggestions",
data: {
term: $("#txtUserSuburb").val()
},
dataType: "json",
type: "POST",
success: function(data){
response(data);
}
});
},
minLength: 2
});
});
我的控制器
function suggestions(){
$this->load->model('autocomplete_model');
$term = $this->input->post('term', TRUE);
$rows = $this->autocomplete_model->getAutocomplete($term);
echo json_encode($rows);
}
我的模特
function getAutocomplete() {
$this->db->like('postcode', $term, 'after');
$query = $this->db->get('tbl_postcode');
$keywords = array();
foreach($query->result() as $row){
array_push($keywords, $row->postcode);
}
return $keywords;
}
没有任何错误,除了它似乎没有将$ term变量传递给模型。
答案 0 :(得分:3)
是的,我认为你需要getAutocomplete()才能有一个参数“$ term”:
function getAutocomplete($term) {
答案 1 :(得分:0)
更改Ajax中的post值
$(function() {
$("#txtUserSuburb").autocomplete({
source: function(request, response){
$.ajax({
url: "autocomplete/suggestions",
data: {
term: request.term //change post value
},
dataType: "json",
type: "POST",
success: function(data){
response(data);
}
});
},
minLength: 2
});
});
在控制器中将页眉设置为JSON
function suggestions(){
$this->load->model('autocomplete_model');
$term = $this->input->post('term', TRUE);
$rows = $this->autocomplete_model->getAutocomplete($term);
$this->output
->set_content_type('application/json')
->set_output(json_encode($rows));
}