jQuery加载函数转义数据

时间:2012-11-05 08:56:30

标签: php javascript jquery escaping

我对jQuery的load函数有一个奇怪的问题。它逃脱了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功能,因此它不再有效。我无法弄清楚我做错了什么,有人知道导致这个问题的原因以及如何以一种好的方式解决这个问题吗?我已经阅读了有关Stack溢出的其他相关问题,但我找不到如何避免转义的答案。

2 个答案:

答案 0 :(得分:1)

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

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

何时逃避char':

  • 当您想要使用'in''块时。例如:echo'test:\'this workes';

当你不需要转义char':

  • 当你想使用'in a'“块时。例如:echo“test:” 这工作“;

对于HTML,请使用以下规则: 如果您不在PHP块中,则无需转义数据。您在此处写的数据将直接输出。如果要进行onClick,只需使用此模板:onClick”functionName('stringValue');”

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

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

答案 1 :(得分:0)

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