我需要将 JSON 对象放入 HTML 元素的属性中。
HTML 不需要验证。
答案是 Quentin: 将 JSON 存储在 data-*
属性中,这是有效的 HTML5。
JSON 对象可以是任何大小-即巨大的
回答者: Maiku Mori。
如果 JSON 包含特殊字符会怎样? 例如 {foo: '<"bar/>'}
Answered by Quentin: Encode the JSON string before putting it into the attribute, as per the usual conventions. 对于 PHP,使用 htmlentities()
< em > 函数.
EDIT-使用 PHP 和 jQuery 的示例解决方案
将 JSON 写入 HTML 属性:
<?php
$data = array(
'1' => 'test',
'foo' => '<"bar/>'
);
$json = json_encode($data);
?>
<a href="#" data-json="<?php echo htmlentities($json, ENT_QUOTES, 'UTF-8'); ?>">CLICK ME</a>
使用 jQuery 检索 JSON:
$('a').click(function() {
// Read the contents of the attribute (returns a string)
var data = $(this).data('json');
// Parse the string back into a proper JSON object
var json = $.parseJSON($(this).data('json'));
// Object now available
console.log(json.foo);
});