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 元素之一上的空白。我删除了数据库中的空格,自动完成功能开始发挥作用了。