Ajax 和 DefaultController Symfony

Posted

技术标签:

【中文标题】Ajax 和 DefaultController Symfony【英文标题】:Ajax and 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 .. 你得到了正确的。只需查看***.com/a/9788435/2236219。 GET 和 POST 方法在控制器中具有不同的访问方式。 我看到了这个答案,我试过了,但还是不行 我都使用过 $request->query->get('name');和 $request->request->get('name') 但它们似乎都没有完成这项工作。这就是为什么我不知道我的代码出了什么问题 你能给我们一个有问题的$request转储吗? 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

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

以上是关于Ajax 和 DefaultController Symfony的主要内容,如果未能解决你的问题,请参考以下文章

YII学习笔记

生成捆绑后无法找到模板

Gin框架自定义 Model

Gin框架自定义 Model

使用“RedirectToAction”从控制器重定向到哈希

.net MVC使用Session验证用户登录