在 HTML 属性中存储 JSON 的最佳方式?
我需要将JSON对象放入HTML元素的属性中。
-
HTML 不必进行验证。Quentin 回答:将 JSON 存储在
data-*
属性中,这是有效的 HTML5。 -
JSON对象可以是任何大小 - 即巨大的
Maiku Mori回答:HTML属性的限制可能是65536个字符。
-
如果 JSON 包含特殊字符,该怎么办?例如:
{foo: '<"bar/>'}
Quentin 回答:按照通常的约定,在将 JSON 字符串放入属性之前对其进行编码。对于 PHP,请使用 功能。
htmlentities()
编辑 - 使用 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);
});