[AJAX] Tuto trop flou
Fermé
jiantox
Messages postés
1081
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
26 janvier 2019
-
26 févr. 2012 à 12:41
jiantox Messages postés 1081 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 26 janvier 2019 - 2 mars 2012 à 01:04
jiantox Messages postés 1081 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 26 janvier 2019 - 2 mars 2012 à 01:04
A voir également:
- [AJAX] Tuto trop flou
- Convertisseur youtube en mp3 tuto - Guide
- Tuto chromecast - Guide
- Tuto rufus windows 11 - Guide
- Tuto tableau croisé dynamique - Guide
- Tuto jdownloader - Guide
3 réponses
Sombresonge
Messages postés
106
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
19 avril 2015
9
Modifié par Sombresonge le 26/02/2012 à 14:25
Modifié par Sombresonge le 26/02/2012 à 14:25
Ci-dessous le code complet pour une utilisation simple d'Ajax. Tu n'as plus qu'à modifier le nom de la page php que tu souhaites appeler, et à traiter les données de retour (xhr.responseText)
Dans ta page PHP, le résultat de ta requête est renvoyée à ta fonction JS avec un simple echo (tu dois donc effectuer la mise en forme dans ta page PHP, ou si tu ne transmets que des variables, les concaténer de façon a pouvoir les récupérer facilement pour ton traitement JS, par exemple concaténer tes variables avec un caractère de séparation, et les dé-concaténer dans le JS avec la méthode split() ).
var xhr; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else if (window.ActiveXObject) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } xhr.onreadystatechange = function() { if (xhr.readyState==4 && xhr.status==200) { // traitement des données de retour // xhr.responseText; } }; //on appelle le fichier addspecialite.php xhr.open("GET", "ici_j_appelle_ma_page_php", true); xhr.send(null);
Dans ta page PHP, le résultat de ta requête est renvoyée à ta fonction JS avec un simple echo (tu dois donc effectuer la mise en forme dans ta page PHP, ou si tu ne transmets que des variables, les concaténer de façon a pouvoir les récupérer facilement pour ton traitement JS, par exemple concaténer tes variables avec un caractère de séparation, et les dé-concaténer dans le JS avec la méthode split() ).
jiantox
Messages postés
1081
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
26 janvier 2019
114
Modifié par jiantox le 29/02/2012 à 12:00
Modifié par jiantox le 29/02/2012 à 12:00
Salut et merci de ta reponse,
j'ai essayé de metre ceci en place mais je n'obtiens rien :
look.php me ressort bien test£test£test sur plusieurs lignes, mais l'index.php ( le js ) ne ressort rien.
Pourrais-tu m'expliquer comment gérer les réponses ( coté js ) ?
Et surtout comment faire pour que je puisse afficher l'integralité de la base ( un while dans le js ? )
Merci beaucoup de ton aide
j'ai essayé de metre ceci en place mais je n'obtiens rien :
<script> var xhr; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else if (window.ActiveXObject) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } xhr.onreadystatechange = function() { if (xhr.readyState==4 && xhr.status==200) { // traitement des données de retour // xhr.responseText; var chaine = xhr.responseText; var tableau = chaine.split('£'); document.getElementById('look').innerHTML = tableau[0]+' • '+tableau[1]+' • '+tableau[2]; } }; //on appelle le fichier addspecialite.php xhr.open("GET", "look.php", true); xhr.send(null); </script><code> et dans mon look.php : <code><? include('/xxxx/xx/www/cfg2/opt.php'); $chk = $bdd->query("SELECT * FROM look"); while($chk2=$chk->fetch()) { echo $chk2[0].'£ '.$chk2[1].'£'.$chk2[2].'<br/>'; } ?>
look.php me ressort bien test£test£test sur plusieurs lignes, mais l'index.php ( le js ) ne ressort rien.
Pourrais-tu m'expliquer comment gérer les réponses ( coté js ) ?
Et surtout comment faire pour que je puisse afficher l'integralité de la base ( un while dans le js ? )
Merci beaucoup de ton aide
Sombresonge
Messages postés
106
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
19 avril 2015
9
29 févr. 2012 à 16:48
29 févr. 2012 à 16:48
très probablement à cause de ton caractère de séparation qui n'est pas un standart en JS (il faudrait utiliser son équivalent octal pour que ça fonctionne). essaye en mettant par exemple des /, ça devrait mieux fonctionner.
jiantox
Messages postés
1081
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
26 janvier 2019
114
29 févr. 2012 à 19:32
29 févr. 2012 à 19:32
ça ne fonctionne que si je n'ai qu'un seul enregistrement dans ma base, mais je vais en avoir environ 100 ( et pour une dizaine de colones donc metre tableau[0]+'..'+tableau[1] ... etc c'est pas top :/
Comment je pourrais faire ça mieu ?
Comment je pourrais faire ça mieu ?
jiantox
Messages postés
1081
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
26 janvier 2019
114
29 févr. 2012 à 19:46
29 févr. 2012 à 19:46
Nan bah j'ai trouvé en fait rien de plus simple, j'ai tout mis en forme sous php, ça ressort tout en propre sous js :
et le php :
et tout roule :)
Merci à toi ;)
function look() { var xhr; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else if (window.ActiveXObject) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } xhr.onreadystatechange = function() { if (xhr.readyState==4 && xhr.status==200) { // traitement des données de retour // xhr.responseText; var chaine3 = xhr.responseText; document.getElementById('look').innerHTML = chaine3; } }; //on appelle le fichier addspecialite.php xhr.open("GET", "look.php", true); xhr.send(null); setTimeout("look()", 1000); }
et le php :
<? include('/xx/xxxxx/www/cfg2/opt.php'); $chk = $bdd->query("SELECT * FROM look"); while($chk2=$chk->fetch()) { echo $chk2[0].' | '.$chk2[1].' | '.$chk2[2].'<br/>'; } ?>
et tout roule :)
Merci à toi ;)
jiantox
Messages postés
1081
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
26 janvier 2019
114
29 févr. 2012 à 19:53
29 févr. 2012 à 19:53
autant pour moi y'a un probleme..
Pour que mon index.php s'actualise, il faut que j'ouvre la page look.php ( quand le js l'apel ça a l'air de ne pas faire de modifications, il faut que j'ouvre le look.php pour que le js change :/ )
est-ce que ça viendrais d'ici :
xhr.open("GET", "look.php", true);
xhr.send(null);
?
Pour que mon index.php s'actualise, il faut que j'ouvre la page look.php ( quand le js l'apel ça a l'air de ne pas faire de modifications, il faut que j'ouvre le look.php pour que le js change :/ )
est-ce que ça viendrais d'ici :
xhr.open("GET", "look.php", true);
xhr.send(null);
?
Sombresonge
Messages postés
106
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
19 avril 2015
9
29 févr. 2012 à 22:44
29 févr. 2012 à 22:44
Même si tu mets en forme dans le PHP, le résultat est récupéré dans ta fonction JS avec responseText. Pour l'intégrer à ta page courante, il faut que tu la modifies avec un innerHTML.
jiantox
Messages postés
1081
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
26 janvier 2019
114
1 mars 2012 à 09:56
1 mars 2012 à 09:56
oui mais le probleme n'est plus là,
là le soucis c'est qu'il faut moi meme que j'appuis sur F5 en etant sur look.php pour que le js de l'index change aussi..
Que faire ?
là le soucis c'est qu'il faut moi meme que j'appuis sur F5 en etant sur look.php pour que le js de l'index change aussi..
Que faire ?
Sombresonge
Messages postés
106
Date d'inscription
mardi 7 février 2012
Statut
Membre
Dernière intervention
19 avril 2015
9
1 mars 2012 à 10:33
1 mars 2012 à 10:33
Pas vraiment normal, en faisant un refresh de ta page ça ne devrait pas te la mettre à jour mais la remettre dans son état initial.
Tu as fais un alert de ton responseText pour voir ce qui t'était retourné ?
Tu as fais un alert de ton responseText pour voir ce qui t'était retourné ?
jiantox
Messages postés
1081
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
26 janvier 2019
114
1 mars 2012 à 13:51
1 mars 2012 à 13:51
non mais il est bien retourné la réponse voulu sur la page look.php
le probleme c'est que le rafraichissement se fais bien sur mon index.php mais sans prendre en compte le look.php ( qui lui récupere juste l'integralité d'une table ).
et pour que le rafraichissement de l'index affiche bien les modification du look.php il faut que j'actualise le look.php :/
Si je l'actualise pas moi meme le contenu de l'index reste le meme ( alors que le contenu de la base a changé et donc le look.php devrai ressotir les nouvelles informations )
le probleme c'est que le rafraichissement se fais bien sur mon index.php mais sans prendre en compte le look.php ( qui lui récupere juste l'integralité d'une table ).
et pour que le rafraichissement de l'index affiche bien les modification du look.php il faut que j'actualise le look.php :/
Si je l'actualise pas moi meme le contenu de l'index reste le meme ( alors que le contenu de la base a changé et donc le look.php devrai ressotir les nouvelles informations )