Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur de syntax AJAX

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of th

Sujet résolu
8 octobre 2019 à 6:44:45

Salut tous le monde !

j'ai envie d'écrire dans un fichier sur le serveur,

donc en utilisant l'objet xmlhttprequest c'est nickel tout marche bien, jusqu'au moment ... du teste ^^

alors je souhaite envoyer via la méthode POST, un tableau d'objet, qui sera transférer sur un script php et ensuite ranger bien sagement dans un fichier au format JSON.

(donc j'ai bien effectuer la convertion objet -> texte avec JSON.stingify, ainsi que la reconvertion avec JSON.parse)

donc la conversion fonctionne bien je teste avec console.log coté "client" (localhost) : ok

ensuite l'envoie : aucune erreur, et le fichier est bien apparu, le format texte est conforme(visuellement en tout cas ^^), donc j'en déduis que tout est bon ...

enfin la reconvertion donc je lance un appel avec la méthode "get", l'url est bonne, j'insere un évenement de type "load", et pour l'instant seulement 1 instruction : afficher le tableau sous forme d'objet.

mais la ! une erreur au dela de ma compréhension actuelle, je cite :

"SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data"

donc la je suis face a un mur (en carton certes, mais je n'ai pas de ciseau :'( ) et j'aurais besoin d'aide pour ce petit message d'erreur ...

donc le contenu du fichier (qui contient un seul objet pour l'instant) :

Array
(
    [0] => Array
        (
            [film] => zorro
            [nom] => toto
            [prenom] => vovo
            [ville] => toulouse
            [habitant] => 400000
        )

)

donc le fichier ici présent, c'est normal qu'il ne soit pas conforme au JSON ?

voila, je crois avoir (trop?) tout dis !

merci de votre aide :))

  • Partager sur Facebook
  • Partager sur Twitter
8 octobre 2019 à 12:29:26

Bonjour,

Pour avoir du json il faut transformer ton tableau en json (au passage, c'est du php)

https://www.php.net/manual/fr/function.json-encode.php

  • Partager sur Facebook
  • Partager sur Twitter
8 octobre 2019 à 13:33:36

je n'ai pas vu sa dans le tuto sur openclassroom ?

la fonction JSON.stringify ne ne fais pas la même chose ?:

code coté client (script.js lié a index.html):

goCommande.addEventListener("click",function(){
    let requete = new XMLHttpRequest();
    requete.open("POST", "http://localhost/javascript-web-srv/post_json.php");
    requete.setRequestHeader("Content-Type", "application/json");
    console.log(listeEntiere);
    let donnee = JSON.stringify(listeEntiere);
    console.log(donnee);
    requete.send(donnee);
});

code coté serveur (post_json.php présent coté serveur sur

http://localhost/javascript-web-srv/post_json.ph

)

):

<?php 

$data = print_r(json_decode(file_get_contents('php://input'), true), true);

file_put_contents('fichier/post_json.log',$data);

ensuite je souhaite afficher le fichier sur autre page html :

code coté client(liste.js lié a une page tierce(sur laquel je veux afficher la liste pour l'exemple appelé liste.html) :

let requete = new XMLHttpRequest();
requete.open("GET", "http://localhost/javascript-web-srv/fichier/post_json.log");
requete.addEventListener("load", function()
{
    console.log(JSON.parse(requete.responseText));
});

requete.send(null);

donc les convertion en JSON sont respectés,

les requetes a priori fonctionnelles ...

et pourtant lorsque je lance mon liste.html j'ai cette erreur de syntaxe dans la console :

"SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data"

;

merci de votre aide 0:)





  • Partager sur Facebook
  • Partager sur Twitter
8 octobre 2019 à 14:34:52

$data = print_r(json_decode(file_get_contents('php://input'), true), true);

et donc pour toi c'est du JSON qu'il y a dans $data ?

json_decode transforme du json en tableau php :

https://www.php.net/manual/fr/function.json-decode.php

  • Partager sur Facebook
  • Partager sur Twitter
8 octobre 2019 à 15:59:15

Ahhh ! j'ai compris (mdr enfin , lol ...) !

okay oui , donc si je prend le contenu de la requete POST de cette manière :

$data = print_r(file_get_contents('php://input'), true);

file_put_contents('fichier/post_json.log',$data);

ainsi, il n'y a pas de conversion objet JSON => variable PHP et inversement,

l'objet JSON (étant donné que c'est du texte) rentre dans la variable data.

ainsi j'ai juste a l'appeler avec :

let requete = new XMLHttpRequest();
requete.open("GET", "http://localhost/javascript-web-srv/fichier/post_json.log");
requete.addEventListener("load", function()
{
    console.log(JSON.parse(requete.responseText));
});

requete.send(null);

qu'en penses-tu ?


  • Partager sur Facebook
  • Partager sur Twitter
8 octobre 2019 à 16:19:04

ça devrais marcher mais niveau sécurité il faut faire attention : tu ne sais pas ce qu'il y a dans ton fichier json, ça peut être n'importe quoi. Je ne pourrais pas t'aider à sécuriser ça, je ne m'y connais pas dans ce domaine en php.
  • Partager sur Facebook
  • Partager sur Twitter
10 octobre 2019 à 5:26:50

sa marche, j'ai bien avancé sur le projet, au lieu de mettre dans dans un fichier, je mets sa dans une bdd, c'est beaucoup plus simple a gérer :o

sujet résolu :))

  • Partager sur Facebook
  • Partager sur Twitter
10 octobre 2019 à 7:58:09

Bonjour,

Sujet résolu

Tu peux passer le sujet à "résolu" (bouton en haut à droite du sujet) et cliquer sur les pouces levés des messages qui t'ont aidé⋅e ;)
  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)

5 février 2025 à 14:44:16

Erreur dans les liens source : JSON.parse: unexpected character at line 1 column 1 of the JSON data
URL de la ressource : https://app.pix.fr/assets/chunk.08112b8afad67ab62c12.js
URL du lien source : chunk.08112b8afad67ab62c12.js.mapenf fbfg fhfflt
  • Partager sur Facebook
  • Partager sur Twitter
5 février 2025 à 15:08:15

Bonjour,

Le message qui suit est une réponse automatique activée par un membre de l'équipe de modération. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

Pour plus d'informations, nous vous invitons à lire les règles générales du forum

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération
  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)