Bonjour,
Depuis deux jours je galère avec un même problème. Je fais une requête en Ajax qui est traitée par un serveur web sur une carte Arduino. Jusqu'alors toutes les requêtes fonctionnent mais je souhaite désormais répondre à une nouvelle requête par une chaîne JSON. Vous trouverez ci-dessous les extraits de code plus bas. Le problème est que dans le code JS, xhttp.responseText montre un contenu parfaitement cohérent avec ce que j'attends aussi bien si je fais un : console.log(xhttp.responseText) ou en affichant le contenu de la variable dans une balise AREA.
Pourtant l'instruction : JSON.parse(json) ci-dessous ...
... provoque systématiquement l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 function AfficheDataTelechargee(xhttp) { document.getElementById('story').value=xhttp.responseText; //copie du résultat dans un AREA console.log(xhttp.responseText); //pour voir le résultat dans la console var json=xhttp.responseText; //const json = '{"donnee":[{"date":"00:00:18","temp":26.2},{"date":"00:00:54","temp":26.2}...]}'; //chaîne provenant le la console var obj = JSON.parse(json); console.log(obj); //pour voir l'objet }
Le comble est que si je fait un copié/collé de ce qui est affiché dans la console et que je le mets dans ma fonction ci-dessus (cf ligne de commentaire que j'ai raccourcie), tout va bien. Il y a donc une différence que je ne vois pas entre le contenu de xhttp.responseText et son contenu que je peux copié/collé dans le code. Auriez vous une piste qui pourrait m'aider ? Un grand merci d'avance.VM198:1 Uncaught SyntaxError: Unexpected token ' in JSON at position 0
at JSON.parse (<anonymous>)
at AfficheDataTelechargee (index.js:128)
at XMLHttpRequest.Ajaxrequete.xhttp.onreadystatechange (index.js:93)
Cordialement
Michel
PS : A tout hasard, voici la fonction qui provoque la requête (les commentaires résultent de tous les essais que j'ai pu faire) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 function Ajaxrequete(url, cFunction) { var xhttp=new XMLHttpRequest(); if (url==document.getElementById('IPserveur').value+'/?partiecsv') { //xhttp.overrideMimeType("application/json"); //xhttp.responseType = 'json'; } xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { cFunction(this); } }; xhttp.open("GET", url, true); //xhttp.responseType = 'text'; xhttp.send(); }
Partager