Json_encode ajoute des barres obliques inverses : dévoiler le mystère
Dans le domaine de JavaScript, json_encode est depuis longtemps un allié de confiance pour encoder des données au format JSON . Cependant, certains développeurs ont rencontré un phénomène inattendu où json_encode introduit des barres obliques inverses dans la sortie.
L'énigme du téléchargement
Un tel cas se produit lors de l'utilisation de json_encode pour renvoyer des données JSON après un téléchargement de fichier. Considérez le code suivant :
print_r($result); // Associative array $encoded_result = json_encode($result); // Valid JSON echo $encoded_result;
Les barres obliques inverses inexpliquées
À la surprise du développeur, le JSON résultant inclut des barres obliques inverses indésirables :
{"logo_url":"http:\/\/mysite.com\/uploads\/gallery\/7f\/3b\/f65ab8165d_logo.jpeg","img_id":"54","feedback":{"message":"File uploaded","success":true}}
Identifier le coupable
Les enquêtes initiales ont révélé que les barres obliques inverses étaient ajoutées quelque part entre json_encode et l'analyse des données JSON par le navigateur.
alert(data.toSource()); // Result: invalid JSON with added "status:200"
La variable cachée
Un examen plus approfondi a révélé un coupable inattendu : l'événement de liaison Plupload.
uploader.bind('FileUploaded', function(up, file, data) { alert(data.toSource()); $('#' + file.id + " b").html("100%"); });
Plupload, une bibliothèque de téléchargement de fichiers populaire, semblait manipuler les données renvoyées, ajoutant la propriété "status:200" et encodant les barres obliques.
La solution : échapper aux barres obliques
Pour contrecarrer les barres obliques inverses indésirables, le code a été modifié pour inclure le " JSON_UNESCAPED_SLASHES" dans l'appel de fonction json_encode :
$encoded_result = json_encode($result, JSON_UNESCAPED_SLASHES);
Cette option désactive efficacement l'échappement des barres obliques, ce qui donne la sortie JSON souhaitée :
{"logo_url":"http://mysite.com/uploads/gallery/7f/3b/f65ab8165d_logo.jpeg","img_id":"54","feedback":{"message":"File uploaded","success":true}}
Dévoiler la vérité
En conclusion, l'ajout de barres obliques inverses dans la sortie json_encode a été attribué à la manipulation involontaire des données par l'événement de liaison Plupload. En incorporant l'option "JSON_UNESCAPED_SLASHES", les développeurs peuvent empêcher ce caractère d'échappement indésirable d'interférer avec leurs données JSON.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!