我有一个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,因为我需要捕获进程是否有错误。
答案 0 :(得分:0)
将{1}}传递给jQuery时,您不需要使用htmlentities
对自己的标记进行编码。只需移除对htmlentites()
的通话,然后发送已标记的HTML。
例外情况是,如果代码的某些部分包含用户提供的文本。在这种情况下,你必须htmlencode()该文本,并保留编码,即使它被附加到DOM元素以供显示。
答案 1 :(得分:0)
我已经解决了!我没有使用PHP的htmlentities()转换大于和小于符号以及引号,我只使用addslashes()来转换(或添加反斜杠)需要反斜杠的字符,如引号。
我发现引号是导致json无法正确解析的原因,我首先使用htmlentities的原因,认为转换所有东西都可以解决它。感谢您的宝贵意见。