使用ajax symfony2加载视图

我是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中

提前谢谢大家

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

 $("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); } }); }); 

希望这有帮助……快乐的编码

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

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

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

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

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

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