如何使用Symfony从ajax请求正确地返回html模板

我想知道如何正确地从ajax调用返回一个HTML模板(SEO友好)。

在我的应用程序中,我使用了2种不同的方式来返回响应:

对于简单的模板:

public function ajaxCallAction() {
//.....
    $response = array(
        "code"      => 202, 
        "success"   => true,
        "simpleData" => $simpleData
    );

    return new JsonResponse($response); 
}

而在JS中我做的是这样的:

$("div#target").click(function(event) {
    $.ajax({
        type: "POST",
        success: function(response) {
            if(response.code === 202 && response.success) {
                $("div#box").append(response.simpleData);    
            }
        }
    });
});

对于复杂模板(超过20行和各种变量):

public function ajaxCallAction() {
    //...
    $listOfObjects = $repo->findAll(); 
    $viewsDatas = [
        'listOfObjects' => $listOfObjects,
        //....other vars
    ];

    return $this->render('myAppBundle:template:complexTemplate.html.twig', $viewsDatas);

    //in complexTemplate.html.twig, I loop on listOfObjects for example...
}

对于这种调用,JS看起来像:

$("div#target").click(function(event) {
    $.ajax({
        type: "POST",
        success: function(response) {
            $("div#box").append(response);    
        }
    });
});

所有这些方法都在工作,但是第二个方法中,我们没有状态代码(这有什么关系?),我知道直接返回格式化的html模板可能很繁重(例如,根据这个主题)为什么返回生成的HTML而不是JSON?或者是?)。

你们是怎么做阿贾克斯电话的? 这里有什么最佳实践?


在我的应用程序中,我通常使用类似的东西:

$response = array( 
"code" => 200,
"response" => $this->render('yourTemplate.html.twig')->getContent() );

希望这个帮助!

编辑

要返回您的回复,请按照文档中的说明使用JsonResponse :http://symfony.com/doc/current/components/http_foundation.html#creating-a-json-response

简单地使用那个:

return new JsonResponse($response);
链接地址: http://www.djcxy.com/p/47901.html

上一篇: How to correctly return html template from ajax request with Symfony

下一篇: Server Side OR Client Side