所以我想在输入上显示这个国家列表: 我使用JQuery UI自动完成和ajax调用数据库。jquery autocomplete&symfony2
的Javascript:
$("#fos_user_registration_form_country").autocomplete({
minLength: 2,
scrollHeight: 220,
source: function(req, add){
$.ajax({
url:Routing.generate('user_register_countries_autocomplete'),
type:"get",
dataType: 'json',
data: 'title_search='+req.term,
async: true,
cache: true,
success: function(data){
var suggestions = [];
//process response
$.each(data, function(i, val){
suggestions.push({"name": val.countryName});
});
//pass array to callback
add(suggestions);
}
});
}
});
控制器:
public function AutoCompletePaysAction()
{
$repository = $this->getDoctrine()->getManager()->getRepository('MyAwesomeWebsiteHomeBundle:Countries');
$listeCountries = $repository->countriesArray();
$liste = json_encode($listeCountries);
return new Response($liste);
}
回购
public function countriesArray()
{
// $query = $this->createQueryBuilder('s');
$query = $this->_em->createQuery("SELECT a.countryName FROM MyAwesomeWebsiteHomeBundle:Countries a");
return $query->getArrayResult();
}
什么显示在Firebug(我的Ajax调用的响应=所有国家)
[{"countryName":"United States"},{"countryName":"Canada"},{"countryName":"Afghanistan"},{"countryName":"Albania"},...
- > AJAX调用似乎每次我键入输入一个字母做工精细,但没有建议显示为它应该自动完成做。
对我来说,每次输入一个字母来检索相同的值就会发出一个ajax调用似乎很奇怪,但是在文档中它是如何完成的。此外,我试图预加载阵列,但我不能让它工作。 tldr:输了。
有什么建议吗?谢谢 !
通常情况下,您将传递用户键入的任何内容作为查询参数。然后,服务器将根据参数筛选返回的条目。大概每输入一个字母都会导致更短的国家名单。因此,“怪异”的行为。自从我使用jquery自动完成之后,这已经太久了。其他人会希望指出你的配置不正确。它看起来好像你会希望你的动作返回一个JsonResponse对象。 – Cerad 2014-10-29 14:36:48
事实上,通过简单的JsonResponse替换json_encode和Response似乎给了我一个选择列表。 (我看不到,只能看到列表中的小点)。比方说,这是一个开始 – oligan 2014-10-29 15:14:17
我认为你可能需要在提供的源代码标签。 'suggestions.push({“label”:val.countryName});' – yajakass 2014-10-29 15:17:27