ฉันต้องการใส่ออบเจ็กต์ 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>
การดึง JSON โดยใช้ 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
คุณควรใช้$(this).data('json')
jQuery คุณได้กล่าวถึงในส่วนนั้นแล้ว