Beim Abrufen von Datenattributen mit .data() von jQuery, und dieses Datenattribut enthält die HTML-Entitäten für doppelte Anführungszeichen, kann es nicht in ein JSON-Objekt konvertiert werden. Wie Sie unten sehen, ist es einfach, da keine gültige JSON gesehen und daher behandelt wie es einen String:Abrufen von Datenattributen mit jQuery "
var dataAsString = $("[data-someprop]").data("someprop");
var dataAsString2 = $("[data-someprop2]").data("someprop2");
var dataAsJSON = $("[data-anotherprop]").data("anotherprop");
$(".target1").append(typeof(dataAsString));
$(".target2").append(typeof(dataAsString2));
$(".target3").append(typeof(dataAsJSON));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div data-someprop='{
"key": "some "value" in quotes"
}'></div>
<div data-someprop2='{ "key": "some "value" in quotes" }'></div>
<div data-anotherprop='{
"key": "some value without quotes"
}'></div>
<div class="target1"></div>
<div class="target2"></div>
<div class="target3"></div>
Wie kann ich doppelte Anführungszeichen durch JSON-Objekte in Daten-Attribute übergeben?
bearbeiten: Ein drittes Beispiel hinzugefügt, um zu zeigen, dass es nicht die Zeilenumbrüche sind.
'Haben JSON.parse' scheitern? – Rayon
Das JSON-Parsing wird von jQuery ausgelöst/ausgeführt, wenn es als analysierbare JSON erkannt wird. Dies scheint nicht der Fall zu sein, da JSON.parse (jQuery ('[data-someprop') .attr ('data-someprop')) ebenfalls fehlschlägt. – MattDiMu