【问题标题】:PHP echo statement escaping from containing DIV elementPHP echo 语句从包含 DIV 元素中转义
【发布时间】:2012-10-10 14:07:35
【问题描述】:

背景:我正在为 WordPress 3.4.2 编辑一个自定义管理页面,这是我正在制作的插件的一部分。

我的 HTML 中有一些 PHP 代码的 sn-p 代码,用于检查变量是否存在并在它有值时打印它:

<div id='ajax-response'>
    <?php
    if(isset($_infos) && !empty($_infos)){
        echo $_infos;
    }
    ?>
</div>

但是,当页面以一种意味着变量具有值的方式运行时,输出实际上不在 #ajax-response &lt;div&gt; 内部,而是直接在其上方,如下所示:

<div id="message" class="updated fade"><p>Download display details updated.</p></div>
<div id='ajax-response'></div>

#ajax-response &lt;div&gt; 的全部意义在于包含来自页面本身和任何 AJAX 调用的所有反馈,因此它们都以相同的样式显示在一起 - 并且都可以从页面很容易 - 所以这很烦人。

最奇怪的是,当我查看源代码时,它应该在 #ajax-response &lt;div&gt; 内,但在 Chrome 的检查器中以及当被 Javascript 引用时,它被视为在 &lt;div&gt; 之外。

任何想法为什么会发生这种情况?

【问题讨论】:

  • 能否请您在查看源代码中显示它的外观?
  • 您的其他 HTML 代码是否有效?想知道是否有一个 &lt;div&gt; 没有正确打开/关闭,这会导致嵌套问题......
  • PHP 不可能按照您所说的方式重新排列您的输出。您必须在客户端使用 javascript 来执行此操作,或者您的 HTML 页面已损坏并且浏览器正在尝试纠正损坏。
  • 浏览器尝试修复无效的 HTML,但经常出错。你试过an html validator吗?
  • 不太可能对您的事业有所帮助,但您绝对应该保持双引号和单引号的使用一致。我会选择双引号,因为我不记得经常看到单引号。

标签: php html dom echo


【解决方案1】:

我不确定,但请检查 php 文件,该文件为您的 javascript 文件提供输出。或者在替换ajax-responce div的内容之前尝试js文件中的alert(来自php文件的响应)。

【讨论】:

    【解决方案2】:

    我知道这个话题已经死了,但我写的几段代码遇到了完全相同的问题。是 ECHO 导致了问题。当我将我的函数换成 RETURN 而不是 ECHO 时,它立即修复了它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-17
      相关资源
      最近更新 更多