0

我总是有 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);
    }
});

如您所见,它非常基本,我想我忘记了一些非常明显的东西,但我看不出那是什么。有任何想法吗?

4

3 回答 3

1

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

[ { "value": "2", "label": "Baldur\'s Gate" }, { "value": "3", "label": "Baldur\'s Gate 2" } ]
  1. '应该用\'
  2. ,第二个对象后有一个,无效
  3. ;应删除响应末尾的。

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" }, ];')
于 2013-01-30T13:10:38.323 回答
0

它也可能是自动完成列表 [ ] 末尾的 , 。IE 不喜欢这样。

于 2013-01-30T14:10:08.290 回答
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;
}
于 2013-01-30T15:10:45.940 回答