SyntaxError: Unexpected token < in JSON at position 0

Par mysterieux, il y a 4 ans


Bonjour tout le monde !

Je me retrouve avec cette erreur : SyntaxError: Unexpected token < in JSON at position 0, et je n'arrive pas à la regler malgres toutes mes recherches...
quelqu'un peut m'expliquer mon erreur ? Voici le code :

let data = { lat: e.latlng.lat, lng: e.latlng.lng, } let dataStringify = JSON.stringify(data); fetch("bdd.php", { method: "POST", headers: { "Content-Type": "application/json", }, body: dataStringify }) .then(r => r.json()) .then(r => { console.log(r) }) .catch(err => console.log('Erreur : ' + err))

Merci ! :)

12 réponses

gillesr, il y a 4 ans

Bonjour,
il y a visiblement un caractère qu'il n'aime pas au début de ton Json. A uoi ressemble le json ?

mysterieux, il y a 4 ans

Merci !
le console.log(dataStringify) donne ce résultat : {"lat":53.74871079689897,"lng":40.42968750000001}
(je ne sais pas si je ne reponds pas à coté, je suis debutant lol)

Glioburd, il y a 4 ans

L'erreur vient de la ligne .then(r => r.json()), car le problème vient de la réponse côté serveur, qu'est ce qu'il te renvoie ? Fais nous voir le code côté back (ton bdd.php).

mysterieux, il y a 4 ans

Entre temps j'ai changé mon fichier bdd.php, le voici :

<?php json_decode(file_get_contents('php://input'), true); ?>

le message d'erreur a changé, maintenant l'erreur est SyntaxError: Unexpected end of JSON input.
je voudrais pouvoir envoyer les coordonnées d'une carte pour pouvoir les enregistrer ensuite en base de donnée, je ne sais pas si je m'y prends de la bonne façon...

gillesr, il y a 4 ans

Oui, je suis d'accord avec Glioburd. C'est parceque ton php ne renvoie pas du json valide.
Essaie avec ça dans le fichier bdd.php :

<?php echo json_encode(file_get_contents('php://input'), true);
mysterieux, il y a 4 ans

Je viens d'essayer et il me met maintenant comme erreur : SyntaxError: Unexpected token < in JSON at position 0
le "<" etant la balise ouvrante de "<?php"... grrrrr :)

gillesr, il y a 4 ans

tu as bien un serveur capable d'exécuter du php qui tourne et le fichier bdd.php est dans le même dossier que ta page qui contient le script ?

mysterieux, il y a 4 ans

oui je suis sur XAMPP, j'ai testé sur mon serveur distant aussi et c'est la même erreur...
Les fichiers sont dans le même dossier aussi, je ne comprends pas ...

gillesr, il y a 4 ans

Bonjour,
Et sii tu remplaces

.then(r => r.json())

par

.then(r => r.text())

qu'est-ce que tu obtiens ?

mysterieux, il y a 4 ans

Hello !
j'obtiens comme réponse du serveur :

<br /> <b>Warning</b>: Array to string conversion in <b>C:\xampp\htdocs\leaflet\bdd.php</b> on line <b>2</b><br /> Array
mysterieux, il y a 4 ans

bonjour tout le monde,
Après plus de 3 jours de recherche ainsi que votre aide, jai pu regler le probleme !
Voici le fichier bdd.php maintenant :

<?php $data = json_decode(stripslashes(file_get_contents('php://input')), true); echo json_encode($data); ?>

plus d'erreur maintenant ! Il me reste à me pencher sur l'inscription en base de donnée de ces valeurs !
Merci à gillesr et Glioburd !

tengarisur, il y a 4 ans

tu as bien un serveur capable d'exécuter du php qui tourne et le fichier bdd.php est dans le même dossier que ta page qui contient le script ?. .