我正在使用autcomplete小部件来填充表单中的客户端ID。它将显示标签,客户端名称,但需要传递id。我正在使用json和这个javascript代码来处理:
$("input#clientid").autocomplete({
source: function(request, response) {
$("#ajax-loader").fadeIn('normal');
$.ajax({
url: BASE_URL + 'projects/ajax/get_clients',
data: request,
dataType: "json",
type: "POST",
success: function(data) {
response(data);
}
});
$("#ajax-loader").fadeOut("normal");
},
minLength: 2
});
在我的PHP控制器中,我用JSON直接打印一些结果,firebug给我这样的显示:
[{"label":"Client example","value":1},{"label":"Lorem Ipsum","value":2},{"label":"Microsoft","value":3}]
但是自动完成没有显示,控制台也没有错误。当我说没有显示我说是<input />
之外没有“div”来选择一个值。对不起,不知道怎么表达好。
如果我从网站上尝试一个没有遥控器的基本示例,它会显示出来。我不知道自己做得不好。
提前谢谢!
答案 0 :(得分:2)
$.ajax({
url: BASE_URL + 'projects/ajax/get_clients',
data: request,
dataType: "json",
type: "POST", <--- //
success: function(data) {
response(data);
}
});
您正在以错误的方式设置请求类型...这就是为什么它设置默认的ajax reaquest类型GET
<强>更新强>
您可以在输入字段使用autocomplete
之前完成ajax请求吗?
$.ajax({
url: BASE_URL + 'projects/ajax/get_clients',
data: request,
dataType: "json",
type: "POST",
success: function(data) {
xhrResponse(data);
}
});
function xhrResponse(data){
$("#clientid").autocomplete({
source: function(data, response) {
$("#ajax-loader").fadeIn('normal');
response($.map( data, function( item ) {
return {
label: item.label,
value: item.value
}
}));
$("#ajax-loader").fadeOut("normal");
},
minLength: 2
});
}