Symfony routing ajax get method

对着背影说爱祢 提交于 2019-12-11 13:00:08

问题


I pass by ajax GET parameters, my url looks like:

example.com/autocamplete?term=string

I add route for that:

autocomplete:
    path:     /autocomplete?term={term}
    defaults: { _controller: CatalogWebBundle:Default:autocomplete }

But it something wrong with my route, because I get error:

GET http://127.0.0.1:8000/autocomplete?term=sdfsd 500 (Internal Server Error)

How to rewrite my route to ajax get patameters ?

JS is:

<script type="text/javascript">
    $(function() {

        //autocomplete
        $("#search").autocomplete({
            source: "\/autocomplete",
            minLength: 1
        });

    });
</script>

回答1:


Install FOSJsRoutingBundle, create a correct route as it is incorrect in your question.

So, you should do something like this:

add bundle JS (may be in base template for global usage):

<script src="{{ asset('bundles/fosjsrouting/js/router.js') }}"></script>
<script src="{{ path('fos_js_routing_js', {"callback": "fos.Router.setData"}) }}"></script>

configure routing (without QS):

autocomplete:
    path:     /autocomplete
    defaults:
        _controller: CatalogWebBundle:Default:autocomple
    options:
        expose: true

configure your JS:

<script type="text/javascript">
    $(function() {

        //autocomplete
        $("#search").autocomplete({
            source: Routing.generate('autocomplete', { 'term': value });,
            minLength: 1
        });

    });
</script>



回答2:


besides the above version (using FOS JS Routing), if you are "rendering" the JS function files without any need for "dynamic generation or routes" you can use a more simple approach

{{ path('routeName', {'slug': slug}) }}

Note: in your case - building a search - it won't work



来源:https://stackoverflow.com/questions/27089855/symfony-routing-ajax-get-method

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!