【发布时间】:2011-08-26 20:26:40
【问题描述】:
我正在尝试让 jquery ui 自动完成功能与 codeigniter 项目一起使用。
到目前为止,我有一个输入字段<input type="text" id="text1"/>
然后在我的脚本中我有
source: function(request, response) {
$.post('autocompleteHandler', {mechanic: request.term}, function(data) {
console.log('data.phpResp = '+data.phpResp);
console.log('in post?');
console.log('data = '+data.toSource);
var realArray = $.makeArray(data); // this line was needed to use the $.map function
response($.map(realArray, function(item) {
console.log('in map');
return {
label: item.info,
value: item.info
}
}));
}, 'json');
},
在我的 codeigniter 控制器中,我有这个功能
function autocompleteHandler() {
$input = $this->input->post('mechanic');
$this->load->model('login_model');
$results = $this->login_model->search_mechanic_criteria($input);
$mechs= array();
foreach($results as $result) {
$mechs['info'] = $result['mechanic_name'];
}
}
我没有让这个工作。有人知道我可以从哪里开始排除故障吗?我真的很难使用 jquery ui 文档。
编辑:我稍微更改了代码。我需要在 php 方面回显 json_encode,而不是返回 json_encode。不过,我的控制台中仍然没有任何显示。
2ND EDIT 现在我的问题是,如何为自动完成功能返回多个值?如果我有一个返回的查询,只有一行,它工作正常,但如果我返回多行,则不起作用。一定是我返回数据的方式有问题,但我想不通。
【问题讨论】:
-
请检查view.jquery.com/trunk/plugins/autocomplete/demo,我相信您没有从 PHP 返回正确的格式。使用 firebug 查看返回的 ajax 内容。
-
我没有使用那个插件。我正在使用 jquery ui 自动完成插件。
-
你试过 fiddler 来看看服务器在生产什么吗?
-
我不需要 fiddler,我可以在 firebug 中使用 net 控制台。我可以看到服务器正在返回我所期望的。
-
对于第二个编辑问题,请参阅jsfiddle.net/XYMGT/1。这是一个返回对象数组而不仅仅是一个对象的问题,至少在客户端说话时是这样。服务器端正确使用“$mechs[] = $result['mechanic_name'];”而不是“$mechs['info'] = $result['mechanic_name'];”。
标签: php jquery ajax codeigniter