如何使用jQuery显示由PHP的htmlentities转换为div的html标签?

时间:2010-02-05 19:17:19

标签: php jquery html

我有一个PHP动态字符串,我用htmlentities()编码,所以我可以使用jQuery和JSON在AJAX上传递它。现在我有点像

{ "error": "false", "html": "<div id="user_add_title">Adding New User<div class="showhide-div"><a class="hideShowToggle" href="#" onclick="$('#account_title').show();$('#account').show();$('#users_container').html('')">[cancel]</a></div></div>" }

当我想在AJAX成功回调函数中显示它时,如:

success: function(json) {
    if(json.error == 'false')
        $("#users_container").html(json.html);
    else
        showMsg(json.msg);
}

实体本身显示的内容

<div id="user_add_title">Adding New User<div class="showhide-div"><a class="hideShowToggle" href="#" onclick="$('#account_title').show();$('#account').show();$('#users_container').html('')">[cancel]</a></div></div>

而不是由浏览器呈现。

如果我在jQuery AJAX调用中使用html或text作为dataType,则标记会正确呈现。我想使用JSON,因为我需要捕获进程是否有错误。

2 个答案:

答案 0 :(得分:0)

将{1}}传递给jQuery时,您不需要使用htmlentities对自己的标记进行编码。只需移除对htmlentites()的通话,然后发送已标记的HTML。

例外情况是,如果代码的某些部分包含用户提供的文本。在这种情况下,你必须htmlencode()该文本,并保留编码,即使它被附加到DOM元素以供显示。

答案 1 :(得分:0)

我已经解决了!我没有使用PHP的htmlentities()转换大于和小于符号以及引号,我只使用addslashes()来转换(或添加反斜杠)需要反斜杠的字符,如引号。

我发现引号是导致json无法正确解析的原因,我首先使用htmlentities的原因,认为转换所有东西都可以解决它。感谢您的宝贵意见。