我总是遇到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);
}
});
如你所见,这是非常基本的,我想我忘记了一些非常明显的事情,但我却看不出那是什么。有什么想法吗?
答案 0 :(得分:1)
看起来返回的值存在多个问题。它应该是
[ { "value": "2", "label": "Baldur\'s Gate" }, { "value": "3", "label": "Baldur\'s Gate 2" } ]
'
应使用\'
,
,无效;
。 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;
}