我正试图在我的Codeigniter项目中实现jQuery Autocomplete,但我在Firefox中遇到了以下错误。
SyntaxError:JSON.parse:JSON数据的第1行第1列出现意外字符
JavaScript
jQuery("#search").autocomplete({
source: function(req, response) {
$.ajax({
url: "<?php echo site_url('C_systemUser/search_value'); ?>",
dataType: "text",
success: function(data) {
var re = $.ui.autocomplete.escapeRegex(req.term);
var matcher = new RegExp("^" + re, "i");
response($.grep(data, function(item) {
return matcher.test(item.label);
}));
}
});
},
minLength: 2,
select: function(event, ui) {
event.preventDefault();
$('#search').val(ui.item.label);
$('#id').val(ui.item.value);
}
});
模式
function systemUserSearch($q) {
$this - > db - > select('systemUserID,systemUserName');
$this - > db - > like('systemUserName', $q);
$query = $this - > db - > get('systemuser');
if ($query - > num_rows() > 0) {
foreach($query - > result_array() as $row) {
$result_row['label'] = htmlentities(stripslashes($row['systemUserName']));
$result_row['value'] = htmlentities(stripslashes($row['systemUserID']));
$result[] = $result_row;
}
echo json_encode($result);
}
}
控制
public function search_value()
{
$q=$this->input->get('query');
$this->load->model('m_autocomplete');
$this->m_autocomplete->systemUserSearch($q);
}
你确定这一点吗:
url: "<?php echo site_url('C_systemUser/search_value'); ?>",
你能很好地在php文件中渲染js吗?
您应该设置内容类型标题
header("Content-Type: application/json;charset=utf-8");
此外,在JS dataType: "json"
中设置
Javascript
jQuery("#search").autocomplete({
source: function(req, response) {
$.ajax({
url: "<?php echo site_url('C_systemUser/search_value'); ?>",
dataType: "json",
success: function(data) {
var re = $.ui.autocomplete.escapeRegex(req.term);
var matcher = new RegExp("^" + re, "i");
response($.grep(data, function(item) {
return matcher.test(item.label);
}));
}
});
},
minLength: 2,
select: function(event, ui) {
event.preventDefault();
$('#search').val(ui.item.label);
$('#id').val(ui.item.value);
}
});
模态
function systemUserSearch($q) {
$this - > db - > select('systemUserID,systemUserName');
$this - > db - > like('systemUserName', $q);
$query = $this - > db - > get('systemuser');
if ($query - > num_rows() > 0) {
foreach($query - > result_array() as $row) {
$result_row['label'] = htmlentities(stripslashes($row['systemUserName']));
$result_row['value'] = htmlentities(stripslashes($row['systemUserID']));
$result[] = $result_row;
}
ob_clean();
header('Content-Type: application/json');
echo json_encode($result);
ob_end_flush();
}
}
感谢所有人的帮助修复了错误,因为jquery Ui Reference错误更改为新版本,该错误修复了