【发布时间】:2015-04-16 22:59:45
【问题描述】:
我使用同一行代码在两个位置将链接回显到我的页面上并获得不同的结果。一个在 标签内,另一个在 标签内。下面是两个代码摘录(来自同一个 tpl 文件)和结果:
<a href="<?php echo $links['current_path']['href']; ?>" role="button"><?php echo $btn['text']; ?></a>
结果:
<a href="index.php?route=module/jw/list&token=a4c693a4e38916fc03af23ad4fe17188" role="button">Filter</a>
但是在我的脚本标签中
url = "<?php echo $links['current_path']['href']; ?>"
我的结果是
url = "index.php?route=module/jw/list&token=a4c693a4e38916fc03af23ad4fe1"
注意路由参数后面的'&'。当我在脚本标签中回显它时,它正在显示 html 代码。我知道我可以在第二种情况下转换它,但我很好奇为什么我需要这样做。为什么相同的 php 命令在源代码的各个部分中使符号回显不同?
【问题讨论】:
-
您是从源代码还是从 DOM 检查器中获取该 HTML 的?我想您的原始字符串中包含
&amp;作为 HTML 并且您的 DOM 检查器正在为您简化视图。 -
@pbaldauf — 为什么?它是 HTML 编码的而不是 URL 编码的。
-
@Quentin:我正在使用 DOM 检查器,但是单击链接时可以正常工作,但是 javascript location = url;没有
-
——这就是问题所在。您的 URL 已经从文本转换为 HTML,因此它在 HTML 属性中可以正常工作,但在 JavaScript 中却不行。处理该问题的最佳方法是转到您从中获取 URL 的任何位置并将其转换为文本。然后仅在您将其插入 HTML 文档时将其转换为 HTML。
-
昆汀:感谢您帮助我更好地理解为什么会发生这种情况。
标签: javascript php