我正在进行AJAX调用,以使用自动填充功能填充输入字段。此自动完成未更新,但正在正确生成JSON响应,问题是自动完成的结果未更新。奇怪的是,自动完成功能在localhost上运行,但是当我尝试在Web服务器上运行时,它不起作用。以下是代码:
<input name="Label" class="form-control ui-autocomplete-input ui-autocomplete-loading" type="text" id="Label" autocomplete="off">
以下是自动填充的Javascript:
$(document).ready(function() {
$('#Label').autocomplete({
minLength: 3,
source: function(request, response){
var loadTitles = "<?php echo $this->Html->url(array('controller' => 'Titles', 'action' => 'getAjax'))?>/" + request.term;
$.getJSON(loadTitles, function(data){
response(data);
});
},
focus: function(event, ui){
$('#Label').val(ui.item.label);
return false;
},
select: function(event, ui){
$('#Label').val(ui.item.label);
$('#Label').val(ui.item.id);
return false;
}
}).data("ui-autocomplete")._renderItem = function( ul, item ){
return $( "<li>" )
.append( "<a>" + item.label + " [<strong>" + item.description + "</strong>]</a>" )
.appendTo( ul );
};
});
正如我前面提到的,AJAX函数正常工作(getAjax函数),它在CakePHP框架上实现,并正确返回JSON结果,问题是输入自动完成没有呈现结果。
答案 0 :(得分:0)
$.getJSON(loadTitles, function(data){
response(data);
});
我添加了.fail函数,我收到了带有空格的意外令牌错误。
另一个问题是我使用Chrome,它使用某种修剪来摆脱空白区域,所以我看不到它。我尝试使用Firebug插件在Firefox上进行调试,在该浏览器中,我能够在其中一个JSON元素上看到空白区域。我删除了数据库中的空白区域,自动完成功能开始像魅力一样。