【问题标题】:transmited html with php json_encode problem用php json_encode问题传输html
【发布时间】:2011-02-02 09:40:02
【问题描述】:

我有一个 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("\/","/"));

【问题讨论】:

  • 一开始为什么要将 HTML 作为 JSON 发送? HTML 有它自己的数据结构,无需在其之上使用另一个数据结构。
  • 我要发送很多部分 [sender_name ,mobile_number, sent_time, message_body]
  • The / must be escaped in JSON. 但是您如何发送请求并处理对您来说有问题的响应?

标签: php javascript json


【解决方案1】:

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

如果您想使用 JSON 值,您必须对其进行解码:

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

【讨论】:

  • 什么是 JSON.decode??哪个扩展jquery?我正在使用 jquery $.post("url",{params},callback,"json"); 以 json 形式接收数据
  • 好的,它是 JSON.parse()。看看这个:stackoverflow.com/questions/4846069/…。我不知道如何在 jQuery 中处理 JSON。
  • 更准确地说,它是 JSON 中的一个 string 反斜杠转义,而不是实际的 JSON 代码本身。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-30
  • 1970-01-01
  • 2013-02-23
  • 2011-06-14
  • 2013-07-29
  • 1970-01-01
相关资源
最近更新 更多