Jquery 自动完成未更新
Jquery autocomplete not updating
我正在调用 AJAX 以使用自动完成功能填充输入字段。此自动完成未更新,但 JSON 响应已正确生成,问题是自动完成的结果未更新。奇怪的是,自动完成功能在本地主机上有效,但当我尝试在 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 结果,问题是输入自动完成未呈现结果。
经过一番努力,我发现了问题。问题是 JSON 上的值在其末尾有很多空格,因此以下函数给出了意外的标记错误:
$.getJSON(loadTitles, function(data){
response(data);
});
我向其添加了 .fail 函数,但收到带有空格的意外标记错误。
另一个问题是我使用的是 Chrome,它使用某种 trim 来去除空格,所以我看不到它。我尝试使用 Firebug 插件在 Firefox 上进行调试,在该浏览器中我能够看到 JSON 元素之一上的空白。我删除了数据库中的空格,自动完成功能开始发挥作用了。
我正在调用 AJAX 以使用自动完成功能填充输入字段。此自动完成未更新,但 JSON 响应已正确生成,问题是自动完成的结果未更新。奇怪的是,自动完成功能在本地主机上有效,但当我尝试在 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 结果,问题是输入自动完成未呈现结果。
经过一番努力,我发现了问题。问题是 JSON 上的值在其末尾有很多空格,因此以下函数给出了意外的标记错误:
$.getJSON(loadTitles, function(data){
response(data);
});
我向其添加了 .fail 函数,但收到带有空格的意外标记错误。
另一个问题是我使用的是 Chrome,它使用某种 trim 来去除空格,所以我看不到它。我尝试使用 Firebug 插件在 Firefox 上进行调试,在该浏览器中我能够看到 JSON 元素之一上的空白。我删除了数据库中的空格,自动完成功能开始发挥作用了。