我必须在主模板中显示一个小模板,以便根据ajax reposne显示小模板。我已经到了ajax请求后获取参数的阶段。
$smarty=new Smarty();
if(isset($_SERVER['HTTP_X_REQUESTED_WITH'])
&&$_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')
{
// echo "<pre>";
//print_r("Yes");
//echo "</pre>";
echo $smarty->fetch('../templates/small-page.tpl');
} else {
$smarty->display('../templates/index-page.tpl');
}
这里的echo语句不起作用。当我取消注释print_r函数时,我可以在firebug中看到html包含“是”但它没有显示在页面上。任何帮助表示赞赏。
答案 0 :(得分:1)
我认为Smarty不会参与你的问题。 Smarty输出任何来自其编译模板处理的内容。
想象一下“是”出来了。
在客户端,你有
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
//Not sure how to diplay a smarty template as a result of responseText or responseXMl
}
}
responseText将保持“是”。例如,尝试:
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
alert(xmlhttp.responseText);
}
}
如果这样做,您将必须决定要对文本做什么。
答案 1 :(得分:1)
如果smarty模板的输出是XML格式,则可以使用xmlhttp的responseXML属性,但前提是php输出正确的mime类型。
尝试:
header("content-type: text/xml");
echo $smarty->fetch('../templates/small-page.tpl');
然后在客户端,
alert(xmlhttp.responseXML);
告诉我它是否有效!