我需要将JSON对象放入HTML元素的属性中。
HTML不必验证。昆汀回答:将JSON存储在
data-*
有效HTML5 的attribute中。JSON对象可以是任何大小-即巨大
森·麦库(Maiku Mori)回答:HTML属性的限制可能为65536个字符。
如果JSON包含特殊字符怎么办?例如
{foo: '<"bar/>'}
昆汀回答:按照常规惯例,将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);
});
data-json
,则应使用$(this).data('json')
,jQuery已覆盖了该部分。