如何在Symfony 2中创建/处理AJAX请求

时间:2013-10-15 18:06:04

标签: php jquery ajax symfony twig

我在页面中有一组会话,我想使用AJAX删除它。即点击链接,无需浏览新页面,只需删除会话,并在成功时显示消息。

有人提出了这种方法,但我似乎无法删除会话,也没有获得任何成功/失败消息。

示例控制器:

use Symfony\Component\HttpFoundation\JsonResponse;

// ...

public function ajaxRemoveSessionAction()
{
    // Destroy the desired session
    $session = $this->getRequest()->getSession();
    $session->remove('name');

    return new JsonResponse(array('success' => true));
}

路由示例:

ajax_remove_session:
    pattern:  /remove-session
    defaults: { _controller: FooTestBundle:Page:ajaxRemoveSession }

示例小枝:

<a href="#" id="remove_session">Remove session</a>

<script type="text/javascript">
$(document).ready(function() {
    $('#remove_session').click(function(){
        event.preventDefault();

        $.ajax({
          url: {{ url('ajax_remove_session') }},
          cache: false,
          success: function(html){
            // do something on success
          }
        });
    });
});
</script>

这些只是需要测试的例子。

1 个答案:

答案 0 :(得分:2)

您检查过JavaScript控制台了吗?它看起来不像是在输出有效的JavaScript

这一点

$.ajax({
  url: {{ url('ajax_remove_session') }},
  cache: false,
  success: function(html){
    // do something on success
  }
});

最终看起来像这样

$.ajax({
  url: /remove-session,
  cache: false,
  success: function(html){
    // do something on success
  }
});

看到错误?网址没有分隔

您可以通过以下两种方式之一解决此问题

  1. 自己填写分隔符

    url: "{{ url('ajax_remove_session') }}",
    
  2. 让Twig为你做这件事

    url: {{ url('ajax_remove_session')|json_encode|raw }},