Je reçois une chaîne d'une page PHP à l'aide d'un code simple que j'ai utilisé plusieurs fois pour obtenir des réponses de chaîne à partir de fichiers PHP. C'est la première fois que j'essaie de convertir ce résultat dans un objet JSON (ou une matrice).
Lorsque j'utilise json.parse sur la réponse, j'obtiens l'erreur ci-dessous. Si je passe comme paramètre de json.parse (), le texte que j'ai consolé log (i.e copié de la console tel qu'il est transmis à JavaScript), cela fonctionne parfaitement. P>
'[ { "idDepart" : "1", "idCircuit" : "5", "dateDebut" : "2019-06-02", "nbPlaces" : "30", "prix" : "4000", "titrePromotion" : "vfv", "rabais" : "10" }, { "idDepart" : "2", "idCircuit" : "5", "dateDebut" : "2019-06-10", "nbPlaces" : "30", "prix" : "6000", "titrePromotion" : "ded", "rabais" : "4" }, { "idDepart" : "3", "idCircuit" : "5", "dateDebut" : "2019-07-02", "nbPlaces" : "30", "prix" : "7000", "titrePromotion" : "ded", "rabais" : "6" } ]'
3 Réponses :
Assurez-vous que vous définissez correctement l'en-tête sur votre script PHP
<?php header('Content-Type: text/json');
C'est application / json code> et ne fera pas de différence si le code (y compris le code dans la question) ne prête aucune attention à l'en-tête.
Vous ne devez pas essayer de créer votre JSON en manipulant la chaîne, mais utilisez la méthode interne Comme ceci, vous êtes sûr à 100% d'avoir: < / p> --- Modifier --- P> Je vois que vous voyez le code en français, faites attention à un char (comme à © © ...). Vous devriez avoir un codage UTF-8 partout. P> Votre base de données Charset, table et champs. p>
$ dbhandle = nouveau PDO ("MySQL: hôte = $ dbhost; dbname = $ dbname; charset = uf-8", $ dbuser, $ dbpass);
$ dbhandle-> exec ("régler le jeu de caractères UTF8"); p> li>
ul> p> json_encode code>.
Fonctionne bien, merci de me montrer comment faire cela. Vous devriez inclure le "," après chaque ligne.
Oui, ce vrai :) S'il vous plaît vérifier aussi mon édition, cela peut vous aider
Merci beaucoup, je vais enregistrer votre réponse pour une référence future sur cette
Pouvez-vous essayer de simplifier le script PHP à cela?
<?php if (!session_id()) { @session_start(); } header('Content-Type: application/json'); require 'controlleur/connexionDB.php'; $sql = "SELECT * FROM depart"; $result = $conn->query($sql); $liste = array(); while($row = $result->fetch()){ $list[] = [ "idDepart" => $row->idDepart, "idCircuit" => $row->idCircuit, "dateDebut" => $row->dateDebut, "nbPlaces" => $row->nbPlaces, "prix" => $row->prix, "titrePromotion" => $row->titrePromotion, "rabais" => $row->rabais ]; } echo json_encode($liste);
ouais, comme ce que Yanis-git a répondu
Quel personnage est à la ligne 1, colonne 1?
c'est tout ce qui est là
Pouvez-vous montrer votre code côté serveur qui retourne JSON ??
Le personnage est-il une apostrophe?
Je vais poster le code PHP
Ajouter
console.log (BTOA (résultat)) code> et postez ce résultat.
Ceci: le résultat dans la console pour la variable "Résultat" est comme ceci: i> La console montre-t-elle en fait le caractère "` "" "" "? Si tel est le cas, le problème est que la chaîne est double indiquée sur le côté serveur.
Toute raison que vous ne pouvez pas utiliser JSON_ENCODE en PHP? Votre code ne supporte pas l'échappement des caractères.
J'ai essayé avec le "" et sans, même résultat
Quand j'utilise json_encode, il est retourné quelque chose de bizarre, peut-être que j'ai commis une erreur
Vous pouvez créer un tableau en PHP avec tous les éléments que vous souhaitez, puis utilisez JSON_ENOCDE à ce sujet ou construisez un élément à la fois et utilisez JSON_ENOCDE à ce sujet, si vous le mettez à l'intérieur »[" et "]".