jquery
  • json
  • 2016-04-04 17 views 1 likes 
    1

    Ich habe JSON in einem Datenattribut. Es ist gültig in Online-Validatoren wie http://jsonlint.com/. Trotzdem ist es ein Fehler. Was ist falsch?jQuery Parse JSON Fehler in gültigen JSON

    HTML

    <div class="seo" data-seo-controller='{"values":{"child_count":"0","type":"tables"},"title":{"field":"\u00e5\u00e4\u00f6 llasdas","template":"This page has {{child_count}} {{type}}!","prefix":"","suffix":" - Products","fallback":"\u00e5\u00e4\u00f6 llasdas","full":"\u00e5\u00e4\u00f6 llasdas - Products","full-replaced":"\u00e5\u00e4\u00f6 llasdas - Products"},"description":{"field":"rwerwe wer &quot; &#039; ewrerte fsd :&#039;","fallback":"rwerwe wer &quot; &#039; ewrerte fsd :&#039;","full":"rwerwe wer &quot; &#039; ewrerte fsd :&#039;","full-replaced":"rwerwe wer &quot; &#039; ewrerte fsd :&#039;","template":"","prefix":"","suffix":"","limit":155},"url":{"edit":"http:\/\/localhost\/seo\/panel\/pages\/saved-value\/url","preview":"seo\/saved-value"}}'> 
    

    jQuery

    $(document).ready(function() { 
        var json = $('.seo').attr('data-seo-controller'); 
        controller = jQuery.parseJSON(json); 
        console.log(controller); 
    }); 
    

    Fiddle

    https://jsfiddle.net/q89hph0L/

    UPDATE:

    Es scheint zu funktionieren, wenn Kopie der json in einen String einfügen und analysieren. Aktualisierte Geige: https://jsfiddle.net/q89hph0L/4/

    Also kann es json nicht als Datenattribut haben?

    +1

    " verursacht das Problem. versuche es zu handhaben. –

    +0

    Es könnte interessant sein zu wissen, wie Sie diese Daten generieren – Brewal

    +0

    @Brewalal Mit PHP. Einige dieser Daten werden in Formularen und andere Daten in HTML-Attribute umgewandelt. Deshalb sind einige Charaktere entkommen. –

    Antwort

    2

    &quot; wird vom Browser in " gerendert, siehe: How to escape double quotes in title attribute. Es ist der gleiche Anwendungsfall wie bei Ihnen.

    Lösung ist &quot; mit \" zu ersetzen und wenn jQuery.data verwenden Sie müssen nicht einmal mit JSON.parse() die Zeichenfolge analysieren. Aktualisierte Datei: https://jsfiddle.net/0qryjrya/.

    Verwandte Themen