Ajax and Jquery in Symfony


Ajax and Jquery in Symfony

我是Symfony(版本2)的初学者,我有一个用普通基本PHP实现的项目,现在我在处理Symfony框架中重新做我的页面,并到达我的jquery ajax函数,当然,事情会有所不同,我以前是这样做的:

$("#div").click(function(){
  $.post("targetFile.php",{/*parameters*/,function(data){ });
});

问:如何使Symfony工作?用什么代替targetFile.php?很可能是一条路线。在控制器和路由器方面该怎么做呢?我搜索了谷歌和这里,但没有得到任何明确的答案。问候。

您只需要将targetFile.php替换为您的自定义路由。

如果你在routing。yml:

中有这个
# app/config/routing.yml
hello:
    pattern:      /ajax/target
    defaults:     { _controller: AcmeHelloBundle:Site:index }

你可以这样写:

$("#div").click(function(){
  $.post("/ajax/target",{/*parameters*/,function(data){ });
});

在Symfony2端,AcmeHelloBundle的SiteController的indexAction方法将被调用。

如果设置了内部路由。yml:

_admin_ajax:
    resource: "@SomethingAdminBundle/Controller/AjaxController.php"
    type:     annotation
    prefix:   /admin/ajax  

…在控制器内部,它会处理ajax调用这个:

/**
 * @Route("/ajaxhandler", name="_admin_ajax_handler")
 */
public function handlerAction() {
    
    $isAjax = $this->get('Request')->isXMLHttpRequest();
    if ($isAjax) {
        //...
        return new Response('This is ajax response');
    }
    return new Response('This is not ajax!', 400);
}

…然后在例如TWIG模板中,你应该这样调用它:

$("#div").click(function(){
  $.post("{{ url('_admin_items_add') }}",{/*parameters*/,function(data){ });
});

…而你的动作的真正路由将由模板引擎生成。