我有一个动作来设置一个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>
答案 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!");
});
});
希望这会有所帮助......