【问题标题】:Getting data from get in controller PHP从控制器 PHP 中获取数据
【发布时间】:2015-03-21 13:49:03
【问题描述】:

我正在尝试通过 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

【问题讨论】:

  • 这是关于交响乐的问题吗? (我从名字html.twig 算出来的)如果是这样,请这样标记。
  • 你是用firebug调试的吗?请在 firebug 控制台查看请求参数、响应结果和请求 url。通过 firebug 弄清楚发生了什么。
  • 如果用twig渲染,这部分:$.get({{path('current', {'id' : 'a1'})}},会产生无效的javascript(缺少引号)。
  • 不要在 symfony 控制器中使用$_GET,使用xxxAction(Request $request) { $val = $request-&gt;query-&gt;get('key'); ...
  • 关键看路由是怎么配置的。它只会是查询的一部分($request-&gt;query),如果它不是路由定义的一部分。例如/some-dir/{notId}。但如果它是路由的一部分(/some-dir/{id}),那么你'必须将其注入方法中。例如xxxAction($id)

标签: php jquery symfony get


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    【解决方案2】:

    保持你的树枝上没有 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 作为您的操作的参数,如果它是在路由中定义的。否则它将在请求中可用。

    【讨论】:

      猜你喜欢
      • 2019-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多