我是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
中提前感谢大家
答案 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对象;)