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 ! :)

11 réponses


mysterieux
Auteur
Réponse acceptée

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 !

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

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)

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).

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...

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);

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 :)

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 ?

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 ...

Bonjour,
Et sii tu remplaces

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

par

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

qu'est-ce que tu obtiens ?

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