SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the
JSON data [Learn More]
Le lien "[Learn More]" renvoit à la page MDN :
SyntaxError: JSON.parse: bad parsing
<https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/JSON_bad_parse?utm_source=mozilla&utm_medium=firefox-console-errors&utm_campaign=default>
Avec le script php qui envoit du json :
$data['text'] = 'html {
background: transparent url(http://mbp.local/global/backgrounds/'.
$files[$rand] . ') no-repeat center center fixed;background-size: cover;}';
$data['background'] = 'transparent
url(http://mbp.local/global/backgrounds/'. $files[$rand] . ') no-repeat
center center fixed';
$data['background-image'] =
'url(http://mbp.local/global/backgrounds/'. $files[$rand] . ')';
$data['backgroundSize'] = 'cover';
echo json_encode( $data );
$files représente les fichiers contenus dans un répertoire et $rand un
nombre aléatoire pointant sur un de ces fichiers.
ce fichier php est lu depuis JavaScript par le code :
JSON.fetch = function(url, callback) {
fetch(url)
.then(function (response) {
return response.json();
})
.then(function (json) {
callback(json);
});
};
utilisé de cette manière :
getBackground () {
JSON.fetch("http://mbp.local/php/background-json.php",
this.setBackground);
};
avec la fonction calback "setBackground" :
setBackground(json) {
if(json.hasOwnProperty('background-image')) {
document.body.style.backgroundImage = json['background-image'];
}
};
bon, mise à part cette erreur dans la console (firefox ou Safari), ça
tourne comme je le veux.
si je pointe un butineur sur "http://mbp.local/php/background-json.php":
j'obtiens :
{"text":"html { \n background: transparent
url(http:\/\/mbp.local\/global\/backgrounds\/cerveaulent_recadre.png)
no-repeat center center fixed;background-size:
cover;}","background":"transparent
url(http:\/\/mbp.local\/global\/backgrounds\/cerveaulent_recadre.png)
no-repeat center center
fixed","background-image":"url(http:\/\/mbp.local\/global\/backgrounds\/cerveaulent_recadre.png)","backgroundSize":"cover"}
ce qui est tout à fait ***normal***
(à mois que je loupe qqc...)
si je lis cet url avec wget j'obtiens exactement la même chose, à savoir
que le "{" est bien le premier caractère et le "}" le dernier.
si je lis cet url avec wget j'obtiens exactement la même chose, à savoir que le "{" est bien le premier caractère et le "}" le dernier.
et il n'y a vraiment pas un espace avant le { ? espace qui peut être un retour à la ligne Cordialement, -- Stéphane Moriaux avec/with iMac-intel 27" & Mac OS X 10.6.8
Le 02/05/17 à 17:37, Une Bévue a écrit :
si je lis cet url avec wget j'obtiens exactement la même chose, à savoir
que le "{" est bien le premier caractère et le "}" le dernier.
et il n'y a vraiment pas un espace avant le {
?
espace qui peut être un retour à la ligne
Cordialement,
--
Stéphane Moriaux avec/with iMac-intel 27" & Mac OS X 10.6.8
si je lis cet url avec wget j'obtiens exactement la même chose, à savoir que le "{" est bien le premier caractère et le "}" le dernier.
et il n'y a vraiment pas un espace avant le { ? espace qui peut être un retour à la ligne Cordialement, -- Stéphane Moriaux avec/with iMac-intel 27" & Mac OS X 10.6.8
Olivier Miakinen
Le 02/05/2017 17:56, SAM a écrit :
Le 02/05/17 à 17:37, Une Bévue a écrit :
si je lis cet url avec wget j'obtiens exactement la même chose, à savoir que le "{" est bien le premier caractère et le "}" le dernier.
et il n'y a vraiment pas un espace avant le { ? espace qui peut être un retour à la ligne
... ou un BOM (invisible). -- Olivier Miakinen
Le 02/05/2017 17:56, SAM a écrit :
Le 02/05/17 à 17:37, Une Bévue a écrit :
si je lis cet url avec wget j'obtiens exactement la même chose, à savoir
que le "{" est bien le premier caractère et le "}" le dernier.
si je lis cet url avec wget j'obtiens exactement la même chose, à savoir que le "{" est bien le premier caractère et le "}" le dernier.
et il n'y a vraiment pas un espace avant le { ? espace qui peut être un retour à la ligne
... ou un BOM (invisible). -- Olivier Miakinen
Une B=c3=a9vue
Le 02/05/2017 à 17:56, SAM a écrit :
et il n'y a vraiment pas un espace avant le { ? espace qui peut être un retour à la ligne
non, je viens de lire avec un Hex éditeur (Hex Fiend) : les premiers caractères : 7B227465 - {"te les derniers caractères : 76657222 7D - ver"} d'après : <http://www.asciitable.com/> 7B semble correct pour "{" 7D semble correct pour "}"
Le 02/05/2017 à 17:56, SAM a écrit :
et il n'y a vraiment pas un espace avant le {
?
espace qui peut être un retour à la ligne
non, je viens de lire avec un Hex éditeur (Hex Fiend) :
les premiers caractères :
7B227465 - {"te
les derniers caractères :
76657222 7D - ver"}
d'après :
<http://www.asciitable.com/>
7B semble correct pour "{"
7D semble correct pour "}"
et il n'y a vraiment pas un espace avant le { ? espace qui peut être un retour à la ligne
non, je viens de lire avec un Hex éditeur (Hex Fiend) : les premiers caractères : 7B227465 - {"te les derniers caractères : 76657222 7D - ver"} d'après : <http://www.asciitable.com/> 7B semble correct pour "{" 7D semble correct pour "}"
Il me semble que ce soit résolu en remplaçant : header('Content-Type: application/javascript'); par : header('Content-Type: application/json; charset=utf-8'); (suite à discussion sur comp.lang.php le fr.comp.lang.php ne répondant pas)
Il me semble que ce soit résolu en remplaçant : header('Content-Type: application/javascript'); par : header('Content-Type: application/json; charset=utf-8'); (suite à discussion sur comp.lang.php le fr.comp.lang.php ne répondant pas)
Une B=c3=a9vue
Le 03/05/2017 à 07:28, Une Bévue a écrit :
Il me semble que ce soit résolu en remplaçant :
euh j'étais trop optimiste : SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data mais il me semble qu'il y en a moins...
Le 03/05/2017 à 07:28, Une Bévue a écrit :
Il me semble que ce soit résolu en remplaçant :
euh j'étais trop optimiste :
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the
JSON data
Non, tu as raison. Avec un éditeur hexa tu ne peux pas passer à côté du BOM s'il en existe un.
bon, ben il n'y en a pas... l'erreur est ailleurs... merci bien
Une B=c3=a9vue
Le 04/05/2017 à 17:35, Olivier Miakinen a écrit :
Non, tu as raison. Avec un éditeur hexa tu ne peux pas passer à côté du BOM s'il en existe un.
bon j'ai trouvé mon erreur grâce au butineur Vivaldi, qui m'a donné une piste : Seul Vivalddi, en effet, m'a indiqué que le caractère fautif était un "<", alors là j'ai tout de suite pensé que php, au lieu de m'envoyer du json, ne pouvait m'envoyer qu'un message d'erreur du genre : <span style="color: red;">Tu as fait une erreur Yvon...</span> Mon erreur était toute bête et n'avait rien à voir avec le json. j'avais : $count = count($files); $rand = rand(0, $count); $count étant le nombre de fichier dans un réertoire. $rand indexe aléatoirement un de ces fichiers, sauf que : int rand($min, $max) retourne un entier compris entre $min et $max ***inclusivement*** j'ai du donc corriger en : $rand = rand(0, $count - 1); That's all folks !
Le 04/05/2017 à 17:35, Olivier Miakinen a écrit :
Non, tu as raison. Avec un éditeur hexa tu ne peux pas passer à
côté du BOM s'il en existe un.
bon j'ai trouvé mon erreur grâce au butineur Vivaldi, qui m'a donné une
piste :
Seul Vivalddi, en effet, m'a indiqué que le caractère fautif était un
"<", alors là j'ai tout de suite pensé que php, au lieu de m'envoyer du
json, ne pouvait m'envoyer qu'un message d'erreur du genre :
<span style="color: red;">Tu as fait une erreur Yvon...</span>
Mon erreur était toute bête et n'avait rien à voir avec le json.
j'avais :
$count = count($files);
$rand = rand(0, $count);
$count étant le nombre de fichier dans un réertoire.
$rand indexe aléatoirement un de ces fichiers, sauf que :
int rand($min, $max)
retourne un entier compris entre $min et $max ***inclusivement***
Non, tu as raison. Avec un éditeur hexa tu ne peux pas passer à côté du BOM s'il en existe un.
bon j'ai trouvé mon erreur grâce au butineur Vivaldi, qui m'a donné une piste : Seul Vivalddi, en effet, m'a indiqué que le caractère fautif était un "<", alors là j'ai tout de suite pensé que php, au lieu de m'envoyer du json, ne pouvait m'envoyer qu'un message d'erreur du genre : <span style="color: red;">Tu as fait une erreur Yvon...</span> Mon erreur était toute bête et n'avait rien à voir avec le json. j'avais : $count = count($files); $rand = rand(0, $count); $count étant le nombre de fichier dans un réertoire. $rand indexe aléatoirement un de ces fichiers, sauf que : int rand($min, $max) retourne un entier compris entre $min et $max ***inclusivement*** j'ai du donc corriger en : $rand = rand(0, $count - 1); That's all folks !
Olivier Miakinen
Le 08/05/2017 07:55, Une Bévue a écrit :
Seul Vivalddi, en effet, m'a indiqué que le caractère fautif était un "<"
??? Tu as écrit que la page renvoyait ceci, vérifié avec un éditeur hexa : ====================================================================== {"text":"html { n background: transparent url(http://mbp.local/global/backgrounds/cerveaulent_recadre.png) no-repeat center center fixed;background-size: cover;}","background":"transparent url(http://mbp.local/global/backgrounds/cerveaulent_recadre.png) no-repeat center center fixed","background-image":"url(http://mbp.local/global/backgrounds/cerveaulent_recadre.png)","backgroundSize":"cover"} ====================================================================== et que l'erreur était sur le premier caractère de la première ligne : ====================================================================== SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data [Learn More] ====================================================================== Comment alors le caractère fautif peut-il être un "<" ??? -- Olivier Miakinen
Le 08/05/2017 07:55, Une Bévue a écrit :
Seul Vivalddi, en effet, m'a indiqué que le caractère fautif était un
"<"
???
Tu as écrit que la page renvoyait ceci, vérifié avec un éditeur hexa :
====================================================================== {"text":"html { n background: transparent
url(http://mbp.local/global/backgrounds/cerveaulent_recadre.png)
no-repeat center center fixed;background-size:
cover;}","background":"transparent
url(http://mbp.local/global/backgrounds/cerveaulent_recadre.png)
no-repeat center center
fixed","background-image":"url(http://mbp.local/global/backgrounds/cerveaulent_recadre.png)","backgroundSize":"cover"}
======================================================================
et que l'erreur était sur le premier caractère de la première ligne :
====================================================================== SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the
JSON data [Learn More]
======================================================================
Comment alors le caractère fautif peut-il être un "<" ???
Seul Vivalddi, en effet, m'a indiqué que le caractère fautif était un "<"
??? Tu as écrit que la page renvoyait ceci, vérifié avec un éditeur hexa : ====================================================================== {"text":"html { n background: transparent url(http://mbp.local/global/backgrounds/cerveaulent_recadre.png) no-repeat center center fixed;background-size: cover;}","background":"transparent url(http://mbp.local/global/backgrounds/cerveaulent_recadre.png) no-repeat center center fixed","background-image":"url(http://mbp.local/global/backgrounds/cerveaulent_recadre.png)","backgroundSize":"cover"} ====================================================================== et que l'erreur était sur le premier caractère de la première ligne : ====================================================================== SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data [Learn More] ====================================================================== Comment alors le caractère fautif peut-il être un "<" ??? -- Olivier Miakinen