Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

probl=c3=a8me json entre php et javascript

11 réponses
Avatar
Une B=c3=a9vue
Problème curieux j'obtiens :

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.

je ne pige pas ???

1 réponse

1 2
Avatar
Une B=c3=a9vue
Le 08/05/2017 à 15:48, Olivier Miakinen a écrit :
Comment alors le caractère fautif peut-il être un "<" ???

passeke ;-)
j'ai donné les résultats quand c'est bon...
le problème venait du fait de son intermitence : le script php est lancé
toutes les 5s (en test), je ne vois pas le résultat quand il y a une
erreur de parsing json. juste le message d'erreur.
donc, j'ai publié un json correct (à un temps donné), et le message
d'erreur (d'un autre temps).
je n'ai réalisé cela que grâce à Vivaldi qui au contraire de safari et
firefox, donne le caractère fautif "<".
ce qui m'a fait soupçonner une erreur php (ie. un message d'erreur), etc.
1 2