2016-10-17 2 views
-1

Ich speichere ein Array als JSON und Parsing es erneut beim Laden. Nach dem Hinzufügen von HTML mit einfachen und doppelten Anführungszeichen funktioniert dies jedoch nicht mehr.JSON.parse Zeichenfolge mit einfachen und doppelten Anführungszeichen?

Wie kann ich den Anführungszeichen entkommen?

JSON.parse('[["",null,null,null,null,null,"","","<span onclick=insertRow()><i class='fa fa-plus-circle fa-lg'></i></span>"]]'); 

uncaught SyntaxError: missing) after argument list 

EDIT:

Meine Zeichenfolge wird gespeichert in der Datenbank JSON.stringify verwenden. Es endet in folgendem Format auf:

[["ad",null,true,false,true,false,"","","<span onclick=insertRow()><i class='fa fa-plus-circle fa-lg'></i></span>"]] 

wenn Im Laden wieder, ich es folgt gefällt:

var phpsave = JSON.parse('<?php echo $result->save; ?>'); 

Wenn im die einfachen Anführungszeichen vor dem Speichern zu entkommen, die Flucht verschwindet nur beim Laden.

.
+1

Das hat nichts mit JSON zu tun. Es ist nur ein ungültiges Zeichenfolgenliteral. – Bergi

+1

Wie kodierst du den JSON? Wie laden Sie es? Sie haben ein Problem, weil Sie eine Zeichenfolge mit einfachen Anführungszeichen als Javascript-Literal in einfachen Anführungszeichen haben. Ich bezweifle, dass Sie so die JSON-Zeichenfolge tatsächlich in die Praxis laden! – deceze

+0

Warum verwenden Sie JSON-Zeichenfolgen im JS-Code anstelle eines einfachen Array-Literals? – Bergi

Antwort

-1

Sie können es entkommen wie

var r = JSON.parse('[["",null,null,null,null,null,"","","<span onclick=insertRow()><i class=\'fa fa- plus - circle fa- lg\'></i></span>"]]'); 
+0

Wenn ich das vor dem Speichern mache, ist das \ beim Laden wieder weg. Bitte sehen Sie meine Bearbeitung in Frage. – user2806026

1

sind Sie dynamisch produzieren Javascript sauer CE-Code. Sie müssen sicherstellen, dass das, was Sie produzieren, syntaktisch gültig ist. Der einfachste Weg, gültig Javascript Literale von PHP zu erzeugen, wird unter Verwendung von json_encode:

var phpsave = JSON.parse(<?php echo json_encode($result->save); ?>); 
// look ma, no quotes! ^         ^

Aber warten Sie, Sie sind nicht JSON vorbei zu Ihrem Javascript? Ist JSON nicht bereits gültiges Javascript? Warum, ja, ja, ist es. So können Sie diesen Schritt auslassen:

var phpsave = <?php echo $result->save; ?>; 

Natürlich könnten Sie wollen sicherstellen, dass Sie wirklich vorbei gültig JSON sind hier zuerst, bevor Sie zufällig Javascript-Code starten ausgibt.

+1

+1 für den richtigen Ansatz, aber [eigentlich JSON ist nicht immer gültig JS] (http://stackoverflow.com/q/23752156/1048572). Und je nachdem, wo es gechannelt wird, muss man immer noch Dinge wie "" vermeiden. – Bergi

+0

Vielen Dank, dass Sie darauf hingewiesen haben. – deceze

Verwandte Themen