将ajax与FOSJsRoutingBundle一起使用

时间:2015-08-17 16:26:13

标签: ajax symfony

我有一个动作来设置一个Travel启用,它运行良好但现在我想用ajax做它所以我已经安装 FOSJsRoutingBundle 但问题是我不知道如何编写ajax代码。

路线

travel_enable:
path:     /travel/enable/{id}
defaults: { _controller: "AppBundle:Travel:enable" }
options:
    expose: true

动作

    public function enableAction(Travel $travel)
    {

    $em = $this->getDoctrine()->getManager();

    $travel->setEnabled(true);

    $em->flush();

    $referer = $this->getRequest()->headers->get('referer');
    return $this->redirect($referer);
}

树枝

<a href="{{ path('travel_enable', {'id': entity.id} ) }}" class="btn btn-xs btn-success" title="Enable"> Enable </a>

的javascript

<script type="javascript">
    // what to put here else

    Routing.generate('travel_enable', { id: '...' });

</script>

1 个答案:

答案 0 :(得分:1)

使用FOSJsRoutingBundle背后是否​​有任何其他原因而不是因为ajax功能?

如果不是,您可以将其删除并预先生成所需的所有网址。像这样的东西

<强>嫩枝:

<a href="{{ path('travel_enable', {'id': entity.id} ) }}" class="btn btn-xs btn-success dyn-link" title="Enable"> Enable </a>

<强> JS:

$('a.dyn-link').on('click', function(){
    var URL = $(this).attr('href');

    $.post(URL, {
        // Your post data here, if any
    }).done(function(response){
        alert("Suceess!");
    }).error(function(){
        alert("Error!");
    });
});

现在,当您动态生成<a>代码时,需要不同方法,在这种情况下您需要 FOSJsRoutingBundle

<强>嫩枝:

<a data-entity-id="YOUR-ENTITY-ID-GOES-HERE" class="btn btn-xs btn-success dyn-link" title="Enable"> Enable </a>

<强> JS:

// You have to use event delegate
$(body).on('click', 'a.dyn-link', function(){
    var entityId = $(this).attr('data-entity-id');

    var URL = Routing.generate('travel_enable', { id: entityId });

    $.post(URL, {
        // Your post data here, if any
    }).done(function(response){
        alert("Suceess!");
    }).error(function(){
        alert("Error!");
    });
});

希望这会有所帮助......