从get in控制器PHP获取数据


Getting data from get in controller PHP

我正试图通过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);

路线名称是可以的。也许还有其他想法如何通过点击链接在控制器中获取数据?我不想使用$.ajax

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

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

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

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

但在您的情况下,我认为您的路线定义中有id参数,然后您可以通过将操作定义为:来访问它

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

保持分支中没有javascript,并使用数据属性检索路径:

<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,那么您应该能够将id作为操作的参数。否则,它将在请求中可用。