【问题标题】:Converting HTML to Valid String将 HTML 转换为有效字符串
【发布时间】:2016-08-11 13:36:38
【问题描述】:

我目前有一个使用 Zend 框架的 PHP 项目。当用户单击按钮时,我正在使用部分获取需要添加到页面的 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,这是它的评估结果:

【问题讨论】:

  • 您首先需要将 = 更改为 (.innerHTML='...); 改为使用 .innerHTML(...)
  • @ArtisiticPhoenix 我不这么认为:tizag.com/javascriptT/javascript-innerHTML.php
  • 我在想 jQuery 风格,不管最后额外的 ) 仍然是一个问题。也许不是问题,但仍然是一个问题。
  • javascript 中所有与 var i = 'ABC'; 一样的 var 都没有任何换行符!请记住这一点。

标签: javascript php jquery html zend-framework


【解决方案1】:

尝试使用type="text/template" 将您的部分封装到script 标记中。浏览器不会理解它是什么类型的脚本,因此它不会执行它。尽管如此,您仍然可以访问其内容,即使它们是多行的。

<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)。

【讨论】:

    【解决方案2】:

    尝试 html_entity_decode:http://www.w3schools.com/php/func_string_html_entity_decode.asp

    <?php
    $str = "&lt;&copy; W3S&ccedil;h&deg;&deg;&brvbar;&sect;&gt;";
     echo html_entity_decode($str);
     ?>
    

    上面代码的 HTML 输出将是(查看源代码):

    <!DOCTYPE html>
    <html>
    <body>
    <© W3Sçh°°¦§>
    </body>
    </html> 
    

    以上代码的浏览器输出将是:

    <© W3Sçh°°¦§>
    

    【讨论】:

    • 看起来我得到了:Uncaught SyntaxError: Invalid or unexpected token,因为 HTML 有一个新行
    猜你喜欢
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 2011-03-09
    • 2012-09-03
    相关资源
    最近更新 更多