我制作了一个ajax代码,用于将表单数据发送到控制器,但它正在返回源代码。
我正在使用FOSJsRoutingBundle在我的js代码中生成我的路径(我安装并使用它就像doc所说的那样),这是工作并在我的js调用时返回它
/xampp/folder/web/app_dev.php/chat /
我像这样用树枝渲染我的表格
{{ form_start(form, {'action': '{{ path("chat_page") }}', 'method': 'POST'}) }}
{{ form_widget(form) }}
<input type="submit" value="Send">
{{ form_end(form) }}
我的js代码看起来像这样
$('form').submit(function(event) {
event.preventDefault();
var url = Routing.generate('chat_page');
console.log(url);
console.log($('#chat_message').val());
$.ajax({
url: url,
type: $('form').attr('method'),
data: $('#chat_message').val(),
success: function(data){
console.log(data);
}
});
$('#chat_message').val('').focus();
});
我的控制器(可能在ajax完成时未使用)就是这个
/**
* @param Request $request
* @Route("/chat/", name="chat_page", options={"expose"=true})
*
* @return \Symfony\Component\HttpFoundation\Response
*/
public function indexAction(Request $request)
{
$chatForm = $this->createForm(ChatType::class);
$client = $this->get('elephantio_client.socketio_key');
$elephantIOClient = $client->getElephantIO();
$elephantIOClient->initialize();
if ($request->isXmlHttpRequest()) {
$chatForm->handleRequest($request);
$chatData = $chatForm->getData();
dump($chatData);
$elephantIOClient->emit('chat message', ['msg' => $chatData]);
}
$elephantIOClient->close();
return $this->render('chat/index.html.twig', [
'form' => $chatForm->createView(),
]);
}
我认为这是一个问题,网址(谁似乎很好)谁不打电话给我的控制器,但我不知道是什么。
我用symfony来讨论关于ajax的一些话题,这就像我一直在做的那样。如果您有任何想法可以帮我解决这个问题。
由于
答案 0 :(得分:1)
它正在呈现您的HTML代码,因为在您的控制器中,您正在使用以下内容呈现HTML代码:
return $this->render('chat/index.html.twig', [
'form' => $chatForm->createView(),
]);
您需要在if子句中添加一个返回响应,以便在发出ajax请求时返回其他内容:
if ($request->isXmlHttpRequest()) {
$chatForm->handleRequest($request);
$chatData = $chatForm->getData();
dump($chatData);
$elephantIOClient->emit('chat message', ['msg' => $chatData]);
return new Response("ok");
}