jQuery UI的自动完成功能不会显示出来

时间:2013-01-30 11:22:53

标签: jquery jquery-ui

我总是遇到jQuery UI的问题,所以我现在就做。我想使用它的自动完成功能,所以我写了一个小结果页面,它返回JSON响应,如下所示:

[ { "value": "2", "label": "Baldur's Gate" }, { "value": "3", "label": "Baldur's Gate 2" }, ];

我的JS是:

function extractLast(term) {
    //return split( term ).pop();
    var t = term.replace(' ', '%20');
    return t;
}

$('nav#mainMenu input').autocomplete({
    minLength:3,
    source: function(request, response) {
        $.getJSON('/Symfony/web/app_dev.php/search/g/' + extractLast(request['term']), response);
    }
});

如你所见,这是非常基本的,我想我忘记了一些非常明显的事情,但我却看不出那是什么。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

看起来返回的值存在多个问题。它应该是

[ { "value": "2", "label": "Baldur\'s Gate" }, { "value": "3", "label": "Baldur\'s Gate 2" } ]
  1. '应使用\'
  2. 进行转义
  3. 第二个对象后面有,,无效
  4. 应删除回复结尾处的;
  5. jQuery.ajax使用jQuery.parseJSON来解析responseText。它通过jQuery.js文件中的"text json": jQuery.parseJSON转换器配置指定。

    如果您将响应传递给此方法,则无法

    jQuery.parseJSON('[ { "value": "2", "label": "Baldur's Gate" }, { "value": "3", "label": "Baldur's Gate 2" }, ];')
    

答案 1 :(得分:0)

它也可能是您的自动填充列表的[]末尾。 IE不喜欢这样。

答案 2 :(得分:0)

好的,我终于成功了;)

问题是返回jQuery的数据。我成功地使用json_encode和我的数组。这是代码:

$results = $search->getResult();
$tab = array();

foreach($results as $result) {
    $tab[] = array('label' => $result->getName(), 'value' => $result->getName(), 'id' => $result->getID());
}

try {
    return new Response(json_encode($tab));

} catch (\Doctrine\Orm\NoResultException $e) {
    return false;
}