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>
Smarty的沒有按那樣工作。您需要在回顯前用smarty解析php腳本中所需的html。另外,如果您使用Prestashop,則使用其控制器及其數據庫訪問方法進行ajax調用。 – TheDrot
@TheDrot請你以某種方式解決我的問題? – jinzo78