我需要将JSON对象放入HTML元素的属性中。
使用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);
});
发布于 2018-03-21 14:57:03
HTML不需要验证。
为什么不呢?验证非常容易,会发现很多错误。使用HTML 5data-*
属性。
JSON对象可以是任意大小的(即巨大的)。
我没有看到任何关于属性大小的浏览器限制的文档。
如果确实遇到它们,则将数据存储在<script>
。定义对象和映射元素id到那个对象中的。
如果JSON包含特殊字符怎么办?(例如,{test:‘<“myString/>’})
只需遵循在属性值中包含不受信任数据的常规规则。使用&
和"
(如果用双引号包装属性值)或'
(如果用单引号包装属性值)。
但是,请注意,这不是JSON(它要求属性名称是字符串,字符串仅用双引号分隔)。
https://stackoverflow.com/questions/-100007708
复制相似问题