Ich erstelle ein riesiges JSON-Objekt und speichere es in meiner Datenbank. Aber wenn ich die "Zeichenkette" lade und sie in PHP widerlege, kann ich nicht auf das JSON-Objekt in JQuery zugreifen. Muss ich etwas berücksichtigen, wenn ich mein JSON-Objekt in einer MySQL-Datenbank speichern möchte (wenn ich das Array erst erstelle und dann mit "echo json_encode ($ arr);" echo), funktioniert es gut, aber ich muss das Objekt speichern zum Caching).JSON in der Datenbank speichern und mit JQuery laden
{ "247": { "0": "Das ist eine Frage", "1": "", "2": "247", "3": "0", "Antworten" : [["Answer1", "960", "1"], ["Antwort 2", "962", "0"], ["Antwort 3", "961", "0"], [" Antwort 4 "," 963 "," 0 "]]}, {" 248 ": {" 0 ":" Dies ist eine Frage "," 1 ":", "2": "247", " 3 ":" 0 "," Antworten ": [[" Answer1 "," 960 "," 1 "], [" Answer 2 "," 962 "," 0 "], [" Answer 3 "," " 961" , "0"], [ "Antwort 4", "963", "0"]]}}
nur ein Auszug
Wenn ich nur dieses JSON-Objekt widerspreche, funktioniert alles gut, aber wenn ich die gleiche Zeichenfolge aus der Datenbank lade und es echo, funktioniert es nicht.
Update 1: vergessen zu sagen, dass ich
-Update ein TEXT-Feld mit utf8_general_ci Sortierungs bin mit 2: Vielleicht ein bisschen mehr Code:
function start() {
$(".start").click(function() {
$.post("load_script.php", { }, function(data){
alert(data[247][0]);
}, "json");
return false;
});
}
dies das Skript lädt und sollte alarmieren "das ist eine Frage"
<?php
require_once('connect.php');
$ergebnis = mysql_query("SELECT text FROM cache_table ORDER BY RAND() LIMIT 1");
while($row = mysql_fetch_object($ergebnis)) {
$output = $row->text;
}
echo $output;
?>
Dies ist das Skript, in dem Ich lade den Datenbankeintrag mit dem JSON-Objekt.
Update 3: Ich denke, dass ich das Problem gelöst habe. Einige Pause schlich sich in meine JSON-Objekt, so kann ich dies tun, vor der Ausgabe:
$output = str_replace("\n", "", $output);
$output = str_replace("\r", "", $output);
$output = str_replace("\r\n", "", $output);
Sie Firebug können Sie überprüfen, dass die Antwort von der ser Was ist eigentlich genau das, was Sie erwarten? –
Ah guter Hinweis (Ich muss Firebug öfter verwenden) und ich denke, ich habe jetzt herausgefunden, was das Problem ist. Einige Unterbrechungen schleichen sich in mein Objekt ein, wenn ich dies vor dem Echo mache, funktioniert es einwandfrei: $ output = str_replace ("\ n", "", $ output); $ output = str_replace ("\ r", "", $ output); $ output = str_replace ("\ r \ n", "", $ output); echo $ output; –
Nur ein Tipp: $ output = str_replace (array ("\ n", "\ r", "\ r \ n"), "", $ output) –