Ich muss ein JSON-Objekt in ein Attribut eines HTML-Elements einfügen.
Der HTML-Code muss nicht validiert werden.Antwort von Quentin: Speichern Sie den JSON in einem
data-*
Attribut , das gültiges HTML5 ist.Das JSON-Objekt kann eine beliebige Größe haben - dh riesig
Antwort von Maiku Mori: Das Limit für ein HTML-Attribut beträgt möglicherweise 65536 Zeichen .
Was ist, wenn der JSON Sonderzeichen enthält? z.B
{foo: '<"bar/>'}
Antwort von Quentin: Codieren Sie die JSON-Zeichenfolge, bevor Sie sie gemäß den üblichen Konventionen in das Attribut einfügen. Verwenden Sie für PHP die Funktion .
htmlentities()
EDIT - Beispiellösung mit PHP und jQuery
Schreiben des JSON in das HTML-Attribut:
<?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>
Abrufen des JSON mit 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
Sie verwenden sollten $(this).data('json')
, hat die jQuery Sie auf diesen Teil behandelt.