使用ajax symfony2加载视图

时间:2012-03-01 12:40:05

标签: javascript jquery

我是symfony2的新手,当用户点击div时,我在使用ajax加载视图时遇到了一些问题。使用firebug我可以看到返回的数据,但是我无法将结果附加到页面中。

我的代码: //默认控制器

public function indexAction($num, Request $request)
    {
        $request = $this->getRequest();

        if($request->isXmlHttpRequest()){
            $content = $this->forward('PaginationBundle:Default:ajax');
           $res = new Response($content);
            return $res;
        } 

        return $this->render('PaginationBundle:Default:index.html.twig', array('num' => $num));
    }

        public function ajaxAction()
    {
        return $this->render('PaginationBundle:Default:page.html.twig');
    }
}

我的Js: 点击#target时,我想在我的div中加载page.html.twig

$("div#target").click(function(event){
    t = t +1;
    $.ajax({
       type: "POST",
       cache: "false",
       dataType: "html",
       success: function(){
       $("div#box").append(data);    
       }
    });
  });

我在我的控制器中使用isXmlHttpRequest()来检测它是否是加载ajaxAction的ajax请求。我在firebug上看到了那个视图,但它没有附加在我的div#box中。 div#box存在于index.html.twig

提前感谢大家

3 个答案:

答案 0 :(得分:6)

在你的 $(“div #target”)。单击(函数(事件)事件,你没有在ajax调用中指定url参数,另一件事是你必须在'success'中指定一个参数 ajax调用的参数。

$("div#target").click(function(event){
    t = t +1;
    $.ajax({

       type: "POST",
       url: "{{path('yourpath-means header name in routing.yml')}}",
       cache: "false",
       dataType: "html",
       success: function(result){
       $("div#box").append(result);    
       }
    });
  });

希望这会有所帮助...... 快乐的编码

答案 1 :(得分:4)

这与symfony无关,但与你的ajax选项无关。 Pece是对的:您可以直接使用§this-> forward的返回值,因为它是一个Response对象。

问题在于你的ajax选项。您必须在内部函数中传递数据对象,否则数据就是null。试试这个:

success: function(data){
    $("div#box").append(data);    
}

答案 2 :(得分:2)

我不会让你的前锋来对待AJAX​​电话。试试这个:

if($request->isXmlHttpRequest()){
    return $this->forward('PaginationBundle:Default:ajax');
}

Controller :: forward()已经返回一个Response对象;)