用php json_encode问题传输html

时间:2011-02-02 09:40:02

标签: php javascript json

我有一个php页面来检索数据库中的新消息,并在json中发送有关它们的报告,如果新消息的主体将不包含html,除了一些插入的brs(<br/>

当在javascript中收到json时,我发现所有brs都从此(<br/>)转换为(<br\/>) 所以它的工作被禁用

当我尝试使用其他html时

<?php
$a="<html><br/></html>";
echo $a,"\n";
echo "Normal: ", json_encode($a), "\n";
echo "Tags: ",   json_encode($a,JSON_HEX_TAG), "\n";
echo "Apos: ",   json_encode($a,JSON_HEX_APOS), "\n";
echo "Quot: ",   json_encode($a,JSON_HEX_QUOT), "\n";
echo "Amp: ",    json_encode($a,JSON_HEX_AMP), "\n";
echo "All: ",    json_encode($a,JSON_HEX_TAG|JSON_HEX_APOS|JSON_HEX_QUOT|JSON_HEX_AMP), "\n\n";
?>

输出就像这样

<html><br/></html> 
Normal: "<html><br\/><\/html>"
Tags: "\u003Chtml\u003E\u003Cbr\/\u003E\u003C\/html\u003E"
Apos: "<html><br\/><\/html>"
Quot: "<html><br\/><\/html>"
Amp: "<html><br\/><\/html>"
All: "\u003Chtml\u003E\u003Cbr\/\u003E\u003C\/html\u003E"

我第一次在json中发送html以前总是数据(纯文本)。 是什么导致了这个,我该怎么做才能解决这个问题???????????


感谢所有那些试图提供帮助的人,因为我很快就需要它,我使用了这个

$("selector").html(result.messageBody.replace("\/","/"));

1 个答案:

答案 0 :(得分:3)

在JavaScript对象表示法(JSON)斜杠中使用反斜杠进行转义,因此<br\/>是有效的JSON,<br/>不是。

如果你想使用JSON值,你必须解码它:

result = JSON.parse(result);
// or
result = eval(result); // simple but maybe unsecure!