javascript - Symfony2 + AJAX返回源码

标签 javascript php ajax symfony

我编写了一个ajax代码来将表单数据发送到 Controller ,但它返回源代码。

我正在使用 FOSJsRoutingBundle 在我的 js 代码中生成我的路线(我按照文档所述安装并使用了它),这正在工作并在调用我的 js 时返回它

/xampp/folder/web/app_dev.php/chat/

我像这样在 Twig 中渲染我的表单

{{ 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();
});

我的 Controller (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(),
    ]);
}

我认为这是 URL 的问题(看起来不错),它没有调用我的 Controller ,但我不知道是什么。

我读了一些关于 ajax 和 symfony 的主题,它一直像我所做的那样。如果您有任何想法可以帮助我解决这个问题。

谢谢

最佳答案

它正在渲染您的 HTML 代码,因为在您的 Controller 中您正在使用以下内容渲染 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");
}

关于javascript - Symfony2 + AJAX返回源码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34529445/

相关文章:

javascript - Ajax 调用 ColdFusion 组件不返回数据

javascript - React 创建常量文件

javascript - 选中单选按钮时启用表单按钮

PHP:目录中的最后一个文件

javascript - 如何在 JavaScript 中使用经纬度获取地名

javascript - 如何在执行 Ajax 请求大量数据库更新时实现进度条

javascript - ActiveX C++ 控件 WriteFile 在尝试 4 次后失败

javascript - 如何使用javascript在文本框上触发焦点事件?

php - 使用 $this->db->select(); 时如何在 codeigniter 中禁用反引号;

php - MySQL 在数组中选择列表