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的主要内容,如果未能解决你的问题,请参考以下文章