【问题标题】:jQuery load function escapes datajQuery加载函数转义数据
【发布时间】:2012-11-05 08:56:29
【问题描述】:

我对 jQuery 的加载函数有一个奇怪的问题。它转义了 jQuery 从加载函数返回的 HTML 内容。我将 PHP 文件中的 HTML 输出加载到 div 中。我使用这个功能:

function XXX(file,divName,functionToCall)
{
    $("#" + divName).load(file,null,function()
    {
        functionToCall();
    });
};

PHP 文件的 HTML 输出:

<div onClick="xxx(0,'xxx')" id="xxx"></div>

jquery 将其转换为:

<div onClick="xxx(0,\'xxx\')" id="xxx"></div>

由于这个约定,我不能使用 onClick 函数,它不再有效。我无法弄清楚我做错了什么,有人知道导致这个问题的原因以及如何以一种好的方式解决这个问题吗?我已经阅读了有关堆栈溢出的其他相关问题,但我找不到如何避免转义的答案。

【问题讨论】:

标签: php javascript jquery escaping


【解决方案1】:

我猜你的问题不在 PHP 块中。以下是您需要遵守的一些规则:

对于 PHP,请使用以下规则:

何时转义 char ':

  • 当您想在 ' ' 块中使用 ' 时。例如: echo 'test: \' this works ';

当您不需要转义字符时:

  • 当您想在“ ”块中使用 ' 时。例如:回显“测试:” 这行得通“;

对于 HTML,请使用以下规则: 如果您不在 PHP 块中,则不需要转义数据。你这里写的数据会直接输出。当你想做一个点击时,只需使用这个模板:onClick”functionName('stringValue');”

可能是编辑的原因: 有些编辑会给\'另一种颜色,不要让颜色分散你的注意力。这并不意味着它是正确的!使用功能较少的文件编辑器(如记事本)并打开您正在讨论的 PHP 文件。再次检查它们不应该出现的地方是否没有 \'s。

在这种情况下,问题不在于 JQuery。相信我,看看 PHP 文件。您是否可能在 PHP 块之外转义了数据?

【讨论】:

    【解决方案2】:

    这与您的 PHP 实现而不是 javascript 有关。当 PHP 输出你的 html 时,它被设置为转义引号。

    【讨论】:

    • 我检查了 PHP 文件的 HTML 输出,它没有转义数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2017-06-04
    相关资源
    最近更新 更多