Je crée un énorme objet JSON et l'enregistre dans ma base de données. Mais quand je charge la "chaîne" et l'echo en PHP, je ne peux pas accéder à l'objet JSON dans JQuery. Est-ce que je dois considérer quelque chose si je veux sauver mon objet JSON dans une base de données MySQL (quand je crée juste le tableau et puis l'echo avec "echo json_encode ($ arr);" cela fonctionne bien, mais je dois enregistrer l'objet pour la mise en cache).Enregistrer JSON dans la base de données et charger avec JQuery
{ "247": { "0": "Ceci est une question", "1": "", "2": "247", "3": "0", "réponses" : [["Réponse1", "960", "1"], ["Réponse 2", "962", "0"], ["Réponse 3", "961", "0"], [" Réponse 4 "," 963 "," 0 "]]}, {" 248 ": {" 0 ":" Ceci est une question "," 1 ":" "," 2 ":" 247 "," 3 ":" 0 "," réponses ": [[" Réponse1 "," 960 "," 1 "], [" Réponse 2 "," 962 "," 0 "], [" Réponse 3 "," 961" , "0"], [ "réponse 4", "963", "0"]]}}
juste un extrait
Si je fais juste écho à cet objet JSON, tout fonctionne correctement, mais si je charge la même chaîne à partir de la base de données et que je l'envoie en écho, cela ne fonctionne pas.
Mise à jour 1: oublier de dire que je suis sur un champ de texte avec collation utf8_general_ci
Mise à jour 2: Peut-être un peu plus de code:
function start() {
$(".start").click(function() {
$.post("load_script.php", { }, function(data){
alert(data[247][0]);
}, "json");
return false;
});
}
cela charge le script et devrait alerter "Ceci est une question"
<?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;
?>
c'est le script, où Je charge l'entrée de base de données avec l'objet JSON.
Mise à jour 3: Je pense que j'ai résolu le problème. Certains break infiltrés dans mon JSON-objet si je fais cela, avant la sortie:
$output = str_replace("\n", "", $output);
$output = str_replace("\r", "", $output);
$output = str_replace("\r\n", "", $output);
Peut-on utiliser Firebug pour vérifier que la réponse du ser ver est réellement exactement ce que vous attendez? –
Ah bon indice (je dois vraiment utiliser Firebug plus souvent) et je pense que j'ai maintenant savoir quel est le problème. Certaines cassures se faufilent dans mon objet, si je le fais, avant l'écho, cela fonctionne bien: $ output = str_replace ("\ n", "", $ output); $ output = str_replace ("\ r", "", $ sortie); $ output = str_replace ("\ r \ n", "", $ sortie); echo $ sortie; –
Juste un conseil: $ output = str_replace (array ("\ n", "\ r", "\ r \ n"), "", $ output) –