Мне нужно поместить объект JSON в атрибут элемента HTML.
HTML не требует проверки.Ответил Квентин: Сохраните JSON в
data-*
атрибуте , который является допустимым HTML5.Объект JSON может быть любого размера - т.е. огромным.
Ответ Майку Мори: Максимальное значение атрибута 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>
Получение 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 предоставит вам эту часть.