我目前有一个使用Zend Framework的PHP项目。当用户单击按钮时,我使用partial来获取需要添加到页面的HTML。问题是HTML似乎是以HTML而不是字符串形式返回的:
document.getElementById("active_projects").innerHTML='<?php echo $this->partial("project/project/activeprojectstable.phtml", array(
"headers" => $headers,
"active" => $this->active
))?>';
.innerHTML =
接受一个字符串,但HTML包含新行和不接受的特殊字符。如何将HTML转换为有效的HTML字符串?
为了更好地了解导致问题的部分生成的HTML,这是它评估的内容:
答案 0 :(得分:3)
尝试使用script
将您的部分封装到type="text/template"
标记中。浏览器不会理解它是什么类型的脚本,因此它不会执行它。尽管如此,您仍然可以访问其内容,即使它们是多行的。
<script type="text/template" id="active_projects_template">
<?php echo $this->partial("project/project/activeprojectstable.phtml", array(
"headers" => $headers,
"active" => $this->active
))?>
</script>
<script type="text/javascript">
// ...
document.getElementById("active_projects").innerHTML=document.getElementById("active_projects_template").innerHTML;
// ...
</script>
AngularJS中的模板使用了类似的模式(type
设置为text/ng-template
)。
答案 1 :(得分:0)
尝试html_entity_decode:http://www.w3schools.com/php/func_string_html_entity_decode.asp
<?php
$str = "<© W3Sçh°°¦§>";
echo html_entity_decode($str);
?>
上面代码的HTML输出将是(查看源代码):
<!DOCTYPE html>
<html>
<body>
<© W3Sçh°°¦§>
</body>
</html>
上面代码的浏览器输出将是:
<© W3Sçh°°¦§>