2016-12-14 1 views
0

XMLHttpRequest를 통해 호출하는 PHP 스크립트가 쿼리를 실행하고 조건을 검사 한 다음 일부 Smarty 코드가있는 HTML 코드 조각을 출력합니다. jQuery.html() 함수를 호출하거나 innerHTML 속성을 설정하여 해당 코드를 <div> 태그에 삽입하려고하면 Smarty 코드가 그대로 인쇄되므로 Smarty 코드로 해석되지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?PHP 스크립트에서 Smarty 형식 데이터 가져 오기

관련 코드 :

PHP 스크립트 :

<?php 
     $mysqli = new mysqli("localhost", "<<<SQL USERNAME>>>", "<<<SQL PASSWORD>>>", "<<<SQL DATABASE>>>"); 
     $id = $_GET["idmf"]; 
     $cat = $mysqli->query("<<<SQL QUERY>>>")->fetch_assoc()["category"]; 
     if ($cat == $_GET["cat"]) 
      echo 'blahblah'; 
?> 

TPL 파일 :

{foreach from=$manufacturers item=manufacturer name=manufacturers} 
    <div id="mffilter_{$manufacturer.id_manufacturer}"></div> 
    <script> 

     var xhttpf; 
     if (window.XMLHttpRequest) 
     { 
      xhttpf = new XMLHttpRequest(); 
     } 
     else 
     { 
      // code for IE6, IE5 
      xhttpf = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     xhttpf.onreadystatechange = function() 
     { 
      if (this.readyState == 4 && this.status == 200) 
      { 
       document.getElementById("mffilter_{$manufacturer.id_manufacturer}").innerHTML = this.responseText; 
      } 
     }; 
     xhttpf.open("GET", "<<<ENDPOINT>>>.php?cat=food&idmf={$manufacturer.id_manufacturer}", true); 
     xhttpf.send(); 

    </script> 
+0

스마티 아무튼 그렇게 일하지 마라. echo하기 전에 smarty로 PHP 스크립트에서 원하는 HTML을 파싱해야합니다. 또한 Prestashop을 사용하는 경우 컨트롤러 및 db 액세스 메소드를 사용하여 ajax 호출을 수행하십시오. – TheDrot

+0

@TheDrot 제발 어떻게 든 제게 주소를 주시겠습니까? – jinzo78

답변

0

다음 코드를 사용하여 TPL 파일의 코드를 교체하십시오 :

{foreach from=$manufacturers item=manufacturer name=manufacturers} 
    <div id="mffilter_"{$manufacturer.id_manufacturer}></div> 
    <script> 

     var xhttpf; 
     if (window.XMLHttpRequest) 
     { 
      xhttpf = new XMLHttpRequest(); 
     } 
     else 
     { 
      // code for IE6, IE5 
      xhttpf = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     xhttpf.onreadystatechange = function() 
     { 
      if (this.readyState == 4 && this.status == 200) 
      { 
       document.getElementById("mffilter_"{$manufacturer.id_manufacturer}).innerHTML = this.responseText; 
      } 
     }; 
     xhttpf.open("GET", "<<<ENDPOINT>>>.php?cat=food&idmf="{$manufacturer.id_manufacturer}, true); 
     xhttpf.send(); 

    </script> 
관련 문제