我有一个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("\/","/"));
答案 0 :(得分:3)
在JavaScript对象表示法(JSON)斜杠中使用反斜杠进行转义,因此<br\/>
是有效的JSON,<br/>
不是。
如果你想使用JSON值,你必须解码它:
result = JSON.parse(result);
// or
result = eval(result); // simple but maybe unsecure!