2017-12-09 4 views
-1

ajax 호출에서 HTML 템플릿 (SEO friendly)을 올바르게 반환하는 방법을 궁금합니다.정확히 symfony와 함께 ajax 요청에서 html 템플릿을 반환하는 방법

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

:

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

    return new JsonResponse($response); 
} 

그리고 JS에서 내가 그런 짓을 :

간단한 템플릿 : 내 응용 프로그램에서

, 나는 응답을 반환 할 2 개의 differents 방법을 사용

complexe 템플릿의 경우 (more t 한 20 라인과 다양한 VAR) : 그 모든 방법을 작동

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

하지만, 두 번째로, 우리는 필요 없다 : 같은

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 보인다 상태 코드 (중요합니까?) 그리고 나는 formated html 템플릿을 반환하는 것이 무거울 수 있다는 것을 안다. (예를 들어이 주제에 따르면 Why is it a bad practice to return generated HTML instead of JSON? Or is it?).

어떻게 아약스 전화를하고 계십니까? 가장 좋은 방법은 무엇입니까? 내 응용 프로그램에서

답변

0

, 나는 일반적으로 그와 같은 것을 사용 :

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

희망이 도움이!

편집

응답, 당신은 JsonResponse이 같은 문서에서 설명 사용해야 돌아 가기 :

return new JsonResponse($response); 
+0

나는 문서를 찾았다했지만 이해 didnt가 : http://symfony.com/doc/current/components/http_foundation.html#creating-a-json-response

은 단순히 사용을 "getContent()"는 무엇입니까 http://api.symfony.com/4.0/Symfony/Component/HttpFoundation/Request.html#method_getContent – skytorner

+0

사용하면 $ this-> render ('template.html.twig'), symfony는 Response 객체를 반환합니다; 이 Response에서 생성 된 HTML 만 필요하기 때문에 getContent()를 사용하여 HTML 문자열을 가져 와서 맨 앞에 전달할 수 있습니다. –

+0

나는 더 많이 파고 들지만 정말로 감사해야한다! 나는 그것을 시도 할 것이다! – skytorner

관련 문제