Tôi cần đặt một đối tượng JSON vào một thuộc tính trên một phần tử HTML.
HTML không cần phải xác thực.Trả lời bởi Quentin: Lưu trữ JSON trong một
data-*
thuộc tính , là HTML5 hợp lệ.Đối tượng JSON có thể có kích thước bất kỳ - tức là rất lớn
Trả lời bởi Maiku Mori: Giới hạn cho một thuộc tính HTML có khả năng là 65536 ký tự .
Điều gì sẽ xảy ra nếu JSON chứa các ký tự đặc biệt? ví dụ
{foo: '<"bar/>'}
Trả lời bởi Quentin: Hãy mã hóa chuỗi JSON trước khi đưa nó vào thuộc tính, theo quy ước thông thường. Đối với PHP, hãy sử dụng hàm .
htmlentities()
EDIT - Giải pháp ví dụ sử dụng PHP và jQuery
Viết JSON vào thuộc tính 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>
Truy xuất JSON bằng jQuery:
$('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
mà bạn nên sử dụng $(this).data('json')
, jQuery sẽ giúp bạn đề cập đến phần đó.