Saya perlu memasukkan objek JSON ke dalam atribut pada elemen HTML.
HTML tidak harus memvalidasi.Dijawab oleh Quentin: Simpan JSON dalam
data-*
atribut , yang merupakan HTML5 yang valid.Objek JSON bisa berukuran berapa saja - yaitu sangat besar
Dijawab oleh Maiku Mori: Batas untuk atribut HTML kemungkinan adalah 65536 karakter .
Bagaimana jika JSON berisi karakter khusus? misalnya
{foo: '<"bar/>'}
Dijawab oleh Quentin: Encode string JSON sebelum memasukkannya ke dalam atribut, seperti konvensi biasa. Untuk PHP, gunakan fungsi .
htmlentities()
EDIT - Contoh solusi menggunakan PHP dan jQuery
Menulis JSON ke dalam atribut 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>
Mengambil JSON menggunakan 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
Anda diberi nama, Anda harus menggunakan $(this).data('json')
, jQuery telah Anda bahas di bagian itu.