Мне нужно поместить объект JSON в атрибут элемента HTML.
-
HTML не должен проверять.Ответа на этот вопрос Quentin: Сохранить JSON в атрибуте
data-*
, который является допустимым HTML5. -
Объект JSON может быть любого размера - т.е. огромного
Ответа на вопрос Maiku Mori: Предел для атрибута HTML - это потенциально 65536 символов.
-
Что делать, если JSON содержит специальные символы? например,
{foo: '<"bar/>'}
Отвечено Quentin: Кодируйте строку JSON перед тем, как поместить ее в атрибут, в соответствии с обычными соглашениями. Для PHP используйте функцию
htmlentities()
.
EDIT - пример решения с использованием 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);
});