【发布时间】:2012-03-18 13:44:39
【问题描述】:
根据标题,将 HTML 放入 JSON 是否被认为是一种好习惯?我需要这样做的原因是因为我想要一个自定义下拉列表,其中列表来自用户输入,并且 json 看起来像这样:
{ listTitle: 'Tasks', listHtml: '<ul><li></li>...</ul>' }
我的 foreach 如下(请记住,这是我的代码的精简版本,验证已经到位,但为了这个问题,我把它们拿出来了)
$list = /** Code to grab 'Tasks' list and its title from mysql **/;
$title = 'Tasks';
$listHtml = '';
foreach($list as $content) { $listHtml .= '<li>' . htmlspecialchars($content, ENT_QUOTES, 'UTF-8') . '</li>'; }
exit(json_encode(array(
'title' => $title, 'listHtml' => '<ul>' . $listHtml . '</ul>'
)));
我担心可能有一些特殊字符可能会破坏 JSON 字符串。请帮忙。
【问题讨论】:
-
只是一个字符串。 JSON 支持字符串。即使是其中包含 HTML 的人 ;) - 请参阅 json.org
-
@andreas:将表示与数据分离似乎是 JSON 等格式的要点。您是否打算让其他网站或用户从侧面获取这些数据并在您的网站外部使用它?如果是这样,添加 html 将破坏它。如果不是,如果这是一个您仅用于帮助构建网页的 json 提要,那么这将取决于您。
-
@bob 嗯?我认为跨域政策适用于您提到的事情?所以除非我愿意在脚本上写回调支持,否则我应该没问题?请赐教
-
@andreas:跨域策略仅影响您自己网站上
XMLHttpRequest和类似对象的使用,而不影响您的 json 提要/字符串的实际来源。不同的东西。如果您的服务器面向 Internet,并且除非受到服务器设置或用户访问控制的保护,否则您的 json 提要对公众开放。您是否希望外部用户可以随意使用此提要?还是您更喜欢它仅用于帮助动态构建您自己的网站? -
嗯,有道理。但这是一个生成的用户列表,因此在服务器上进行会话检查以查看用户是否已登录。感谢您的洞察力:)