Aucune des deux ne marchent :/
Version imprimable
Ces deux choses marchent parfaitement c'est seulement le code qui est dans le fichier js qui ne fonctionne pas.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 fetch('envoi.php') .then(response => { return response.json(); alert("test2"); }) .then(data => { variable = data; alert(variable); // ou alert('Nombre : ' + variable) document.getElementById("zone").innerHTML = variable; }) .catch(err => { alert("erreur"+ err.message);// Que faire en cas d'erreur d'appel du script PHP });
Qu’as-tu essayé ?
Attention, dans ton premier .then(), le alert() n’est jamais appelé car il est après un return :
Pour répondre à ta question en commentaire :Code:
1
2
3
4
5
6 .then(response => { return response.json(); alert("test2"); })
Il y a deux cas de figure :Code:alert("erreur"+ err.message);// Que faire en cas d'erreur d'appel du script PHP
- Une erreur réseau ;
- Une erreur du script PHP.
Dans le premier cas, fetch émet une TypeError qui est attrapée par ton .catch().
Dans le second cas, ça dépend de ce que renvoie le PHP. S’il renvoie un message d’erreur, il sera probablement invalide en tant que JSON, et ton .catch() capturera une SyntaxError disant quelque chose à propos de JSON. Dans cette situation, difficile de voir quelle était la réponse du serveur, mais tu peux la retrouver dans l’onglet réseau du panneau F12, en cliquant sur la ligne de la requête fetch correspondante.
Déjà de base j'ai toujours le problème qu'après avoir été sur le fichier envoi.php je ne sais pas comment le renvoyer automatiquement vers index.html et rien n'apparait en réseau a par le css
Pièce jointe 487220
Bonjour,
Le script php attend une variable en POST, or aucune donnée n'est envoyée par le js en faisant juste fetch('envoi.php').
Quelques exemples ici :
https://stackoverflow.com/questions/...t-fetch-in-php
Pas bien clair.
Après le retour d'ajax, il faut rediriger vers index.html ?
Il n'y avait peut-être pas besoin d'ajax pour finir.
Si j’en crois ton message #9, ton .fetch() est appelé directement au début d’une balise <script>, elle-même au début du <html>. Si ce fetch n’est pas appelé, et s’il n’y a pas de message d’erreur dans la console, je ne vois qu’une explication : la balise <script> n’est pas interprétée.
:fleche: Vérifie que la balise fermante </script> est présente et que sa syntaxe est correcte.
Pièce jointe 487259Citation:
Envoyé par Loralina
Quand je démarre mon programme je vais d'abord sur form.html pour renseigner si il y a eu un nombre important de décès je clique sur valider, cela me renvoit vers la page envoi.php qui m'affiche la somme de tous les nb de décès importants entrés depuis le début, et ensuite j'aimerais que ce soit redirigé automatiquement vers index.html qui afficherait les compteurs (Le compteur de population mondiale auquel on aurait soustrait le nb de décès importants
Voici le code html :
Les codes de envoi.php et de time.js ont déjà été mis plus tôt dans des posts précédentsCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <body> <header> <div id ="headerr"> <div id="logo"> <img src="logo.JPG" alt="Logo de Nausicaa" /> </div> <div id="image"> <h4>Population mondiale <img src="drapeau.jpg" class="imageflottante" alt="Image flottante" /> || World population <img src="anglais.jpg" class="imageflottante2" alt="Image flottante 2"/> || Wereldbevolking <img src="drapnd.jpg" class="imageflottante3" alt="Image flottante 3"/> </h4> </div> </div> </header> <script src = "../time.js"></script> <p><span id="timer"></span></p> <p>nb deces importants <span id="zone"></span></p> <p> Population française || French population || Franse bevolking <br/><span id="timerFr"></span></p> </body>
Si je regarde le message auquel fait référence Watilin, je vois sur la capture écran, dans la barre d'adresse qu'on est sur le fichier envoi.php.
Le script avec fetch tel qu'il est écrit ne ferait jamais une telle redirection.
Visiblement, le fichier envoi.php est appelé par ailleurs depuis un formulaire html classique.
Cette nouvelle précision le confirme :
De plus, ce script avec fetch s'exécute directement et n'attend pas le clic du bouton "valider" donc c'est bien que le bouton valider soumet un formulaire totalement indépendant de ce script.Citation:
je clique sur valider, cela me renvoit vers la page envoi.php
L'échange avec fetch tel qu'il est fait ne peut aboutir qu'à une erreur vu qu'il n'envoie pas de données sur POST et que le script envoi.php, qui en attend une, devrait retourner une erreur de ce point de vue.
Par contre, le clic sur le bouton valider, lui, il va envoyer pour de bon une variable en POST, s'accompagnant d'un changement d'adresse vers le fichier envoi.php.
Il serait possible de rediriger en php avec header('Location: ...'); dans le script envoi.php.
Doit-il y avoir, par ailleurs, un échange via fetch avec un script php en vue de renseigner la balise "zone" ?
Si oui, à voir si on échange avec le même fichier, mais il y aura des adaptations à faire (par exemple, mais ce n'est pas idéal, le script pourrait regarder s'il n'a pas reçu de variable POST pour savoir s'il est appelé par ce fetch et retourner l'information souhaitée).
Je dis tout ça en supposant que le "envoi.php" du fetch et le "envoi.php" du formulaire html correspondent bien au même fichier.
le header'location' marche bien mais cela me met toujours le message d'erreur : echec de lecture
la photo c'était parce que je m'étais tromper dans le chemin d'accès
Il n'y a qu'un seul fichier envoi.php