我正在尝试在我的网站上搜索城市时实现自动完成搜索(拼车)。我制作了一个控制器 searchCity,它返回一个带有城市的 json:
/**
* @Route ("/city/{term}")
*/
public function searchCity($term)
{
$query = $this->getDoctrine()->getRepository('App:Ville')
->createQueryBuilder('v')
->select('v.id, v.nomReel AS text')
->where('v.nomSimple LIKE :term')
->setParameter('term', $term.'%')
->getQuery()
->getResult();
$query = array('results' => $query);
return new JsonResponse($query);
}
例如,如果我去 /city/Paris 我会得到:
{"results":[
{"id":30438,"text":"Paris"},
{"id":29427,"text":"Paris-l\u0027H\u00f4pital"}, //I know single quotes
{"id":33294,"text":"Parisot"}, //don't work
{"id":33531,"text":"Parisot"}]}
选择 :
<div class="container">
<select id="citySelect" class="select2 select2-dropdown select2-search" name="term">
</select>
</div>
javascript :
$(document).ready(function(){
$("#citySelect").select2({
placeholder: "Select city",
ajax: {
dataType: "json",
url: function (params) {
return '/city/' + params.term;
},
processResults: function (data) {
return {
results: $.map(data, function(obj) {
return { id: obj.ime, text: obj.ime };
})
};
}
}
});
});
当我搜索一个城市时,控制台日志没有显示任何内容(搜索......并且没有显示)我可以看到数据在那里并且格式正确,但城市没有显示在下拉菜单中。我认为我的问题出在我的 javascript 代码和我对 select2 的理解上。
问候
更新 :
js:
$(document).ready(function(){
$(".select2").select2({
placeholder: "Select city",
ajax: {
dataType: "json",
url: function (params) {
return '/city/' + params.term;
},
processResults: function (data) {
return {
results: data.results //return data directly
};
}
}
});
});
我想在转换你想要的数据时
return { id: obj.id, text: obj.text };
代替
return { id: obj.ime, text: obj.ime };
同时查看您发布的json,您可能(未测试)只是这样做
processResults: function (data) {
return {
results: data.results;
};
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句