Bonjour!
Lorsque j'affiche mon xhr.responsetext ca me donne la valeur qui été inscrite dans ma page php.
Par contre lorsque je fait reponse=whr.responsetext là rien ne se passe!
Pourquoi?
Bonjour!
Lorsque j'affiche mon xhr.responsetext ca me donne la valeur qui été inscrite dans ma page php.
Par contre lorsque je fait reponse=whr.responsetext là rien ne se passe!
Pourquoi?
reponse=whr.responsetext ==> reponse=xhr.responsetext plutot ?
oui j'ai fait la faute en tapant mon sujet mais pas dans mon code!
pour eclairsir un peu les choses voici mon code :
Edit : le problème est que ca ne passe jamais dans ma condition et que lorsque j'affiche ma variable reponse dans un alert je n'ai aucun message!
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 function actualiser_info() { //Création de l'objet xhr----------------------------------------------------- var reponse=""; var xhr= null; if(window.XMLHttpRequest) // Firefox { xhr= new XMLHttpRequest(); } else if(window.ActiveXObject) // Internet Explorer { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); return; } //---------------------------------------------------------------------------- //Ouvre la connexion au serveur en précisant le type de données : xhr.open('GET','./script/actualisationminute.php',true); //On associe à une varible un contenue, ici pour le contenu de la page : xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // On regarde les changement d'état de l'objet xhr xhr.onreadystatechange = function attente(){ // l'état est à 4, requête reçu ! if(xhr.readyState == 4) { reponse=xhr.responseText; } } // Envoi la requete xhr au serveur : xhr.send(null); //if(reponse=="roui") //{ window.location.replace("../../index.php"); } return; }
Il me semble que tu testais "reponse" au mauvais endroit.
As-tu essayé?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if(xhr.readyState == 4) { reponse=xhr.responseText; if(reponse=="roui") window.location.replace("../../index.php"); }
A+
2h de perdu pour une connerie comme ca, ca donne envie de programmer :p
Je te remerci, c'était ça!!
Par contre, pourquoi ca fonctionne comme cela et pas comme je l'avais fait avant?
Entre autre parce que "reponse" est une variable locale (de ta fonction actualiser_info() )
Or, du fait de l'appel asynchrone, lorsque ta fonction attente() sera exécutée, tu ne sera plus dans la fonction actualiser_info().
De plus, tu testais "reponse" au moment de (enfin : immédiatement après) la déclaration de la fonction attente(), et non de son exécution.
A ce moment là, Ajax n'avait pas encore répondu ...
A+
Merci!
J'ai un autre problème (avec IE6 uniquement)
Ca doit provenir du cache.
En fait je fait une requête AJAX qui va interoger un fichier php pour faire resortir une liste d'utilisateur.
Le fichier php est appellé toutes les 30 secondes.
Pour Firefox tout va bien, l'actualisation des données se fait comme il faut par contre pour IE6 les résultats sont toujours les mêmes, aurait tu une idée pour remédier à ce problème?
Oui, il a été abordé dans le Contributions
A+
Merci pour les infos!
J'ai testé et ca ne change rien...
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
16
17
18
19
20
21
22
23
24 function liste_actif(num) { //Création de l'objet xhr----------------------------------------------------- var xhr= null; if(window.XMLHttpRequest) // Firefox { xhr= new XMLHttpRequest(); } else if(window.ActiveXObject) // Internet Explorer { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); return; } //---------------------------------------------------------------------------- xhr.open('GET','./script/listeactif.php?a='+num,true); xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); xhr.setRequestHeader("Cache-Control","no-cache"); xhr.onreadystatechange = function attente(){ if(xhr.readyState == 4) { document.getElementById('listeactif'+num).innerHTML=xhr.responseText; } } xhr.send(null); return; }
Ca doit être comme ceci?
Avec ce code je n'obtient aucunes réponses dans mon div...
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
16
17
18
19
20
21
22
23
24
25
26 function liste_actif(num) { //Création de l'objet xhr----------------------------------------------------- var xhr_liste= null; if(window.XMLHttpRequest) // Firefox { xhr_liste= new XMLHttpRequest(); } else if(window.ActiveXObject) // Internet Explorer { xhr_liste = new ActiveXObject("Microsoft.XMLHTTP"); } else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); return; } //---------------------------------------------------------------------------- xhr_liste.open('GET','./script/listeactif.php?a='+num,true); xhr_liste.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); document.getElementById('listeactif'+num).setRequestHeader("Cache-Control","no-cache"); xhr_liste.onreadystatechange = function attente(){ if(xhr_liste.readyState == 4) { document.getElementById('listeactif'+num).innerHTML=xhr_liste.responseText; } } xhr_liste.send(null); return; }
Merci de votre aide!
Je vais tester la solution coté serveur qui me parait être la meilleur en cas de désactivation du javascript.
Edit : La solution fonctionne à merveille! (je pense que ce n'est pas la dernière fois que je vous soliciterais :p) merci de votre aide!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager