【问题标题】:Error when replace whole page using JS使用JS替换整个页面时出错
【发布时间】:2018-08-16 07:17:38
【问题描述】:

我有一个内容为 html 的 php 变量:

当我使用 Javascript 时:

document.body.innerHTML.replace("<?php echo $content ?>");

要替换整个页面,它会说错误:

和jQuery是一样的错误:

jQuery('html').html("<?php echo $content ?>");

有什么办法可以,JS和PHP方案都可以。

【问题讨论】:

  • 读取生成的源码。您的字符串无效;你需要逃避它。
  • &lt;?php echo $content ?&gt; 可能添加了一些不需要的字符
  • 另外,replace() 不会做你认为的那样。
  • @mickmackusa 还是同样的错误。
  • @mickmackusa 没那么快,没有实际的方法知道它也不会返回未转义的反斜杠

标签: javascript php jquery replace


【解决方案1】:

转换成 HTML 特殊字符然后用 JS 转换回来?

var str = "<?php echo htmlspecialchars($content); ?>";
str = str.replace('&gt;', '>').replace('&lt;', '<').replace('&quot;', '"');
jQuery('body').html(str);

【讨论】:

  • 它仍然说 SyntaxError: expected expression, got '
  • @HữuCôngHoàng 这可能意味着 HTML 解析不正确(即&lt;html
【解决方案2】:

这似乎不是关于引号和特殊字符,而是更多关于换行符。 您可以使用 json 来防止所有这些字符的出现。

document.body.innerHTML = <?=json_encode($html)?>;

这适用于我的服务器:

<?php
$html = <<<HTML
<span>Lorem Ipsum is simply dummy text of the printing and typesetting industry. </span>
<a href="http://google.com">Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.</a>
<strong>When an unknown printer took a galley of type and scrambled it to make a type specimen book</strong>
HTML;
?>

<html>
    <body>blah</body>
    <script>
        document.body.innerHTML = <?=json_encode($html)?>;
    </script>
</html>

当然,如果你在脚本前面声明了$html = json_encode($html);,你可以只使用document.body.innerHTML = &lt;?=$html?&gt;;

【讨论】:

  • 非常感谢,但是 $content 是从 file_get_contents 获取的,所以我不能将“
  • 没关系,这对您的任务无关紧要。这只是我设置演示的方式,这样我就不必转义任何引号。如果对你有用,请接受我的回答。
  • 好的,它与 =json_encode($html)?> 一起工作,没有“
猜你喜欢
  • 2014-07-25
  • 2015-07-10
  • 2014-04-24
  • 2013-04-28
  • 2011-12-08
  • 1970-01-01
  • 1970-01-01
  • 2011-03-06
  • 1970-01-01
相关资源
最近更新 更多