【问题标题】:Ajax and DefaultController SymfonyAjax 和 DefaultController Symfony
【发布时间】:2018-04-27 00:58:19
【问题描述】:

我使用 Symfony 3 并尝试使用 Ajax 在默认控制器中调用我的函数,如下所示:

$(document).ready(function() {
    $.ajax({
        dataType: "json",
        type: "POST",
        data: {
            action: 'active'
        },
        url: '{{ path ('
        show_chat ')}}',
        success: function(active) {
            if (active === true)
                $('.message-box').fadeIn();
        },
        error: function() {
            console.log('error');
            return false;
        }
    });
});

在默认控制器中,我想返回一个 twig 模板和一个为 true 的变量,这样我的聊天窗口就会出现:

return $this->render('ChatBundle:Default:chat.html.twig',$online);

我用$presence = $request->get('active');Symfony\Component\HttpFoundation\Response;

我的方法是 POST,但是当我转储 $request 时,方法是 GET。我不明白我做错了什么以及为什么它不起作用......任何想法,请

路由:

show_chat:
path:     /chat
defaults: { _controller: slackChatBundle:Default:chat}
methods: [POST,GET]

如果我只放 POST 方法,我会收到一条消息“找不到路由,不允许方法(允许:POST)

这是请求的转储:

dump request

【问题讨论】:

  • 请求方式为 Post ..
  • 你得到了正确的。只需查看stackoverflow.com/a/9788435/2236219。 GET 和 POST 方法在控制器中具有不同的访问方式。
  • 我看到了这个答案,我试过了,但还是不行
  • 我都使用过 $request->query->get('name');和 $request->request->get('name') 但它们似乎都没有完成这项工作。这就是为什么我不知道我的代码出了什么问题
  • 你能给我们一个有问题的$request转储吗?

标签: php ajax symfony


【解决方案1】:

我建议你使用FOSJsRoutingBundle,它允许你将 Symfony 路由暴露给 JavaScript

【讨论】:

    【解决方案2】:

    您能否提供更具体的转储请求->请求和请求->查询?

    关于下面的帖子,我同意你应该使用 FOSJsRoutingBundle。它让你暴露 symfony 路由。

    【讨论】:

    • 我添加了一张 dump $request 的照片。有了Get,一切都是空的
    • 好的,我现在可以发表评论,我需要这些特定的转储来查看问题是来自 js(可能是路由)还是来自您的控制器
    • Karael,非常感谢您的建议...我设法找到了解决方案..我没有改变很多,我将变量分配给 JsonResponse : $response = new JsonResponse($online ) 我返回它返回 $response,没有渲染,只是工作,惊喜....我不知道这是否是好方法,但它确实有效。 ..现在我将使用 FOSJsRoutingBundle,因为我必须从 js 进行 ajax 调用
    猜你喜欢
    • 2012-01-17
    • 2012-11-28
    • 2012-08-16
    • 2021-04-06
    • 2011-11-25
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多