Die Frage: wird dieser Fehler in der Konsole erwartet? Ich denke, entkommen oder ersetzen ' mit \' wird so dreckig sein!
AKTUALISIERT
Eigentlich $daten Wert kommt von a json_encode($var) und $var ist ein Array!
$data = json_encode($var);
seanvalencourt
Für das umfassendere Problem der Übergabe eines JSON-codierten Strings in PHP (z. B. durch cURL) ist die Verwendung der JSON_HEX_APOS-Option der sauberste Weg, dieses Problem zu lösen. Dies würde auch Ihr Problem lösen, obwohl die vorherigen Antworten richtig sind, dass Sie dies nicht tun brauchen zum Aufrufen von parseJSON, und das JavaScript-Objekt ist das gleiche, ohne parseJSON aufzurufen $data.
Für Ihren Code würden Sie einfach diese Änderung vornehmen:
json_encode($var) zu json_encode($var, JSON_HEX_APOS).
Hier ist ein Beispiel für die korrekt codierten Daten, die von jQuery geparst werden: http://jsfiddle.net/SuttX/
Das funktioniert perfekt. Für Leute, die Twig verwenden, lautet der Code json_encode(constant(‘JSON_HEX_APOS’)). Vielen Dank für diese Lösung.
– Herr1031011
11. November 2019 um 8:45 Uhr
Tolle Antwort, die mir auch geholfen hat
– hell
1. März 2021 um 16:03 Uhr
Wenn ich jedoch eine Änderung in der JSON-codierten Zeichenfolge vornehme, füge ich dem einfachen Anführungszeichen einen Backslash hinzu
Das maskiert es im PHP-String-Literal. Es wird dann als simple in den PHP-String eingefügt '.
Wenn Sie es maskieren möchten, bevor Sie es in JavaScript einfügen, müssen Sie der erhaltenen Zeichenfolge Schrägstriche hinzufügen aus von json_encode (oder besser gesagt, da Sie diesen (sollten!) JSON-String, den Sie von Hand erstellen, nicht verwenden).
Das ist aber mehr Arbeit als nötig. Die wirkliche Lösung besteht darin, sich daran zu erinnern, dass JSON eine Teilmenge der JavaScript-Literalsyntax ist:
var obj = <?=$data?>;
+1 keine Notwendigkeit, es zu analysieren – die Ausgabe von json_encode ist bereits gültiges JavaScript.
– cmbuckley
29. Juli 2013 um 14:20 Uhr
Es wäre gut zu spezifizieren JSON_HEX_TAG | JSON_HEX_AMP obwohl. Zumindest ersteres kann notwendig sein, um die zu befriedigen Beschränkungen für den Inhalt von script Elementeund beide sind erforderlich, wenn das Dokument als XML analysiert werden kann.
– Bitte stehen
29. Juli 2013 um 14:26 Uhr
Hallo – ein bisschen spät zur Party, aber ich hatte genau das gleiche Problem und das war die Lösung! Könnten Sie bitte genauer erklären, was <?=$data ?> meint? Ist das eine Kurzversion des Schreibens von ‘` oder ist das etwas anderes?
– Allen S
12. Mai 2014 um 14:08 Uhr
@user1775598 Du hast genau recht: <?= ist eine Abkürzung für <?php echo
– seanvalencourt
1. Oktober 2014 um 20:16 Uhr
Orangenpille
Das Problem, mit dem Sie konfrontiert sind, ist, dass Sie die Ergebnisse der präsentieren json_encode Aufruf von JavaScript als Zeichenfolge, obwohl es sich um gültiges JavaScript handelt. Entferne das jQuery.jsonParse aus der Ausgabe heraus und weisen Sie einfach die geechoten Ergebnisse der betreffenden JavaScript-Variablen zu.
Der obige Code wird für Sie funktionieren … er zeigt sich auch, wenn Sie den Schritt Javascript parseJson übergeben.
– Orangenpille
29. Juli 2013 um 14:22 Uhr
Dies sollte einfach sein, wenn es nur um einfache Anführungszeichen geht:
str_replace("'", "\'", json_encode($array));
Schau mal, es hilft mir wirklich
$products_arr=array();
$products_arr["category"]=array();
while ($row = $cats->fetch(PDO::FETCH_ASSOC)){
$product_item=array(
"id" => $row['id'],
"title" => json_encode($row['title'])// these will help you
);
array_push($products_arr["category"], $product_item);
}
echo json_encode($products_arr);
12517300cookie-checkphp json_encode & jquery parseProblem mit einfachen JSON-Anführungszeichenyes