sky*_*ner 4 ajax templates symfony twig
我想知道如何从 ajax 调用正确返回 HTML 模板(SEO 友好)。
\n\n在我的应用程序中,我使用两种不同的方式返回响应:
\n\n对于简单模板:
\n\npublic function ajaxCallAction() {\n//.....\n $response = array(\n "code" => 202, \n "success" => true,\n "simpleData" => $simpleData\n );\n\n return new JsonResponse($response); \n}\nRun Code Online (Sandbox Code Playgroud)\n\n在 JS 中我做了类似的事情:
\n\n$("div#target").click(function(event) {\n $.ajax({\n type: "POST",\n success: function(response) {\n if(response.code === 202 && response.success) {\n $("div#box").append(response.simpleData); \n }\n }\n });\n});\nRun Code Online (Sandbox Code Playgroud)\n\n对于复杂模板(超过 20 行和各种变量):
\n\npublic function ajaxCallAction()\xc2\xa0{\n //...\n $listOfObjects = $repo->findAll(); \n $viewsDatas =\xc2\xa0[\n \'listOfObjects\' => $listOfObjects,\n //....other vars\n ];\n\n return $this->render(\'myAppBundle:template:complexTemplate.html.twig\', $viewsDatas);\n\n //in complexTemplate.html.twig, I loop on listOfObjects for example...\n}\nRun Code Online (Sandbox Code Playgroud)\n\n对于这种调用,JS 如下所示:
\n\n$("div#target").click(function(event) {\n $.ajax({\n type: "POST",\n success: function(response) {\n $("div#box").append(response); \n }\n });\n});\nRun Code Online (Sandbox Code Playgroud)\n\n所有这些方法都有效,但是对于第二个方法,我们没有状态代码(这重要吗?)并且我知道返回直接格式化的 html 模板可能很重(例如根据本主题Why is it a bad Practice to return生成 HTML 而不是 JSON?或者是吗?)。
\n\n你们如何进行ajax调用?这里的最佳实践是什么?
\n在我的应用程序中,我通常使用类似的东西:
$response = array(
"code" => 200,
"response" => $this->render('yourTemplate.html.twig')->getContent() );
Run Code Online (Sandbox Code Playgroud)
希望这有帮助!
编辑
要返回您的响应,您应该JsonResponse按照文档中的说明使用:http://symfony.com/doc/current/components/http_foundation.html#creating-a-json-response
只需使用:
return new JsonResponse($response);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11413 次 |
| 最近记录: |