Jquery自动完成不更新

时间:2015-07-24 00:23:30

标签: jquery jquery-autocomplete

我正在进行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结果,问题是输入自动完成没有呈现结果。

1 个答案:

答案 0 :(得分:0)

经过一番挣扎,我发现了这个问题。问题是JSON上的值在其末尾有很多空格,因此以下函数给出了意外的令牌错误:

$.getJSON(loadTitles, function(data){
   response(data);
 });

我添加了.fail函数,我收到了带有空格的意外令牌错误。

另一个问题是我使用Chrome,它使用某种修剪来摆脱空白区域,所以我看不到它。我尝试使用Firebug插件在Firefox上进行调试,在该浏览器中,我能够在其中一个JSON元素上看到空白区域。我删除了数据库中的空白区域,自动完成功能开始像魅力一样。