从控制器PHP中获取数据

时间:2015-03-21 13:49:03

标签: php jquery symfony get

我试图通过jQuery中的$ .GET获取一些数据。我有一个链接,点击后我想在控制器中接收数据。我做了这个,但它不起作用,$ _GET数组是空的:

html.twig:

<a href="{{path('current')}}" id="get">Some name</a>
        <script>
        $(document).ready(function() {
            $(document).on('click','#get', function(){
                $.get({{path('current', {'id' : 'a1'})}}, function( data ) {
                console.log(data);
            });
            });

        });

        </script>

控制器:

var_dump($_GET);

路线名称为O.K.也许其他一些想法如何通过点击链接获取控制器中的数据?我不想使用$ .ajax

2 个答案:

答案 0 :(得分:0)

如果您只是希望服务器接收请求,则不需要任何AJAX。您可以使用相同参数的链接:

<a href="{{path('current', {'id' : 'a1'})}}" id="get">Some name</a>

此链接会向您的服务器发送GET请求,您将能够访问它。唯一的区别是您将被重定向到控制器呈现的新页面。但正如你所说:你不需要AJAX。

此外,您需要了解使用$_GET检索参数是一种不好的做法。如果要使用相同参数处理$request->get('id')GET请求,则必须使用POST。如果您只想访问GET请求参数,请$request->query->get('id')

但在您的情况下,我认为您的路由定义中包含id参数,然后您可以通过将操作定义为:

来访问它
public function currentAction(Request $request, $id) {
    // $id - is your parameter
}

答案 1 :(得分:0)

保持你的twig清理javascript并使用data属性来检索路径:

<a href="#_" data-posturl="{{path('current', {'id' : 'a1'})}}" id="get">Some name</a>

在你的js文件中:

$(document).on('click','#get', function(){
                $.post($(this).data('posturl')).done(function (data) {
        }).error(function (data) {
            $('body').prepend(data.responseText);
        });});

并且在您的操作中,如果在路线中定义了您的操作,您应该能够将您的ID作为参数。否则它将在请求中提供。