【问题标题】:Select2, Symfony: Autocomplete with remote data not workingSelect2,Symfony:远程数据无法自动完成
【发布时间】:2017-12-17 15:30:21
【问题描述】:

我正在尝试在我的网站上搜索城市(拼车)时实现自动完成搜索。 我制作了一个控制器 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
                        };
                    }
                }
            });
        });

【问题讨论】:

    标签: javascript symfony jquery-select2


    【解决方案1】:

    我猜是在转换你想要的数据时

    return { id: obj.id, text: obj.text };
    

    而不是

    return { id: obj.ime, text: obj.ime };
    

    同时查看您发布的 json,您可能(未经测试)就可以这样做

    processResults: function (data) {
        return {
            results: data.results;
        };
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      • 2015-07-20
      • 2015-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多