Re: Connexion asynchrone en javascript

Page principale

Répondre à ce message
Auteur: Patrice Karatchentzeff
Date:  
À: Edgar Bonet
CC: guilde
Sujet: Re: Connexion asynchrone en javascript
Salut Edgar,

En mettant ton code, j'ai exactement la même erreur sur le

let json = JSON.parse(text);

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

J'avais réussi à isoler cela en améliorant un peu le précédent code :


const submitConnectAsync2 = async () => {
    return fetch(
      uriBase + '/connect', {
    mode: 'no-cors', // beurk... but waiting for a nice workaround
from Dancer2 side!
    method: 'POST',
    headers: {
          'Accept' : 'application/json',
          'Content-Type' : 'application/json',
    },
    body: JSON.stringify(jsonReader),
      })
      //.then(response => {
      //    response.json();
      //    console.log("Response:", response.json());
      //    console.log("Fin de l'envoi");
      //})
      .then(text => {
        console.log(`Received ${JSON.stringify(text)}`);
        let json = JSON.parse(text);
        setMessage(json);
        console.log("Coucou2");
      })
      //.then(json => {
      //    setMessage("Connecté à la main");
      //    console.log("(1) connection state:", message);
      //    console.log("Fin de la réception");
      //})
      .catch(error => {
    console.log("Transaction error:", error);
    console.log("body:", JSON.stringify(jsonReader));
    //console.log("response:", response.son());
    //console.log("json:", json);
      });
  };


(en décommentant le code et en commentant le tien)

le response.json() est une promesse qui n'est pas tenue et renvoie à
la fin de l'exécution la même erreur.

*Ce que je ne comprends pas*, c'est que la console de dév de FF me lit
bien cette (censuré) de requête de retour *correctement* (c'est la
bonne valeur et c'est un json valide !!!!), tandis que Chrome s'arrête
plus logiquement en disant qu'il n'a rien reçu (ce qui correspond
grosso modo au fait qu'il n'arrive pas à déchiffrer la requête retour
en json).

Merci

PK

Le mer. 7 juin 2023 à 10:52, Edgar Bonet <guilde@???> a écrit :
>
> Bonjour !
>
> Patrice Karatchentzeff a écrit :
> > JSON.parse: unexpected end of data
>
> Apparemment c'est response.json() qui n'arrive pas à comprendre la
> réponse du serveur. Est-ce que tu pourrais nous montrer le texte de la
> réponse ? En remplaçant tes deux then() par ça :
>
>     .then(response => response.text())
>     .then(text => {
>         console.log(`Received ${JSON.stringify(text)}`);
>         let json = JSON.parse(text);
>         setMessage(json);
>         console.log("Coucou2");
>     })

>
> Le JSON.stringify() c'est pour bien voir de potentiels caractères
> bizarres (BOM, caractères de contrôle...).
>
> À+,
>
> Edgar.
>



-- 
      |\      _,,,---,,_           Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:patrice.karatchentzeff@gmail.com
     |,4-  ) )-,_. ,\ (  `'-'
    '---''(_/--'  `-'\_)