Я передаю параметры ajax GET, мой url выглядит так:
example.com/autocamplete?term=string
Я добавляю маршрут для этого:
autocomplete: path: /autocomplete?term={term} defaults: { _controller: CatalogWebBundle:Default:autocomplete }
Но с моим маршрутом что-то не так, потому что я получаю ошибку:
GET http://127.0.0.1:8000/autocomplete?term=sdfsd 500 (Internal Server Error)
Как переписать мой маршрут на ajax получить patameters?
JS:
<script type="text/javascript"> $(function() { //autocomplete $("#search").autocomplete({ source: "\/autocomplete", minLength: 1 }); }); </script>
Установите FOSJsRoutingBundle , создайте правильный маршрут, поскольку он неверен в вашем вопросе.
Итак, вы должны сделать что-то вроде этого:
добавить пакет JS (может быть в базовом шаблоне для глобального использования):
<script src="{{ asset('bundles/fosjsrouting/js/router.js') }}"></script> <script src="{{ path('fos_js_routing_js', {"callback": "fos.Router.setData"}) }}"></script>
настроить маршрутизацию (без QS):
autocomplete: path: /autocomplete defaults: _controller: CatalogWebBundle:Default:autocomple options: expose: true
поautocomplete: path: /autocomplete defaults: _controller: CatalogWebBundle:Default:autocomple options: expose: true
настройте JS:
<script type="text/javascript"> $(function() { //autocomplete $("#search").autocomplete({ source: Routing.generate('autocomplete', { 'term': value });, minLength: 1 }); }); </script>
помимо вышеприведенной версии (с использованием FOS JS Routing), если вы «визуализируете» файлы функций JS без необходимости «динамической генерации или маршрутов», вы можете использовать более простой подход
{{ path('routeName', {'slug': slug}) }}
Примечание: в вашем случае – создание поиска – оно не будет работать