Fonction AJAX qui ne se déclenche pas [Résolu]

Signaler
Messages postés
149
Date d'inscription
mardi 7 janvier 2003
Statut
Membre
Dernière intervention
24 novembre 2010
-
Messages postés
149
Date d'inscription
mardi 7 janvier 2003
Statut
Membre
Dernière intervention
24 novembre 2010
-
Bonjour,

Je sollicite de votre bienveillance dans la résolution de ce problème qui tend à m'épuiser

J'ai deux fonctions
function creationXHR()
{
var XHR=null;
if(window.XMLHttpRequest || window.ActiveXObject)
{
if(window.ActiveXObject)
{
try
{XHR=new ActiveXObject("Msxml2.XMLHTTP");}
catch(e)
{XHR=new ActiveXObject("Microsoft.XMLHTTP");}
}
else
{
XHR=new XMLHttpRequest();
if(XHR.overrideMimeType){XHR.overrideMimeType('text/xml');}
}
}
else{alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");return null;}
return XHR;
}

function actualiserPlateau()
{
var XHR=creationXHR();
if(XHR==null)
{
alert("Impossible d'utiliser Ajax avec votre navigateur.");
}
else
{ XHR.open("GET","ajax_afficher_plateau.php",false);
XHR.onreadystatechange = function()
{
alert('');
if(XHR.readyState==4 && (XHR.status==0 || XHR.status==200))
{ remplacerContenu("plateau",XHR.responseText);
}
};
}
XHR.send(null);
}


Comme vous l'aurez deviné, creationXHR créé un objet XHR qui est renvoyé tout bien. Ca, ca semble marcher.
Ce qui semble inopérant c'est que le "alert('');" ne s'affiche pas (et la suite non plus d'ailleurs) alors que si je le mets avant le XHR.onready... il s'affiche...

J'en déduis que XHR ne change pas d'état... mais pourquoi ?

Info : ajax_afficher_plateau.php ne contient que <?php echo "essai";?>

Merci d'avance pour toute idée et aide apportée à la résolution de mon (petit) casse-tête personnel !

8 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
17
Bonjour,
fait ta requête en asynchrone
XHR.open("GET","ajax_afficher_plateau.php", true); 

je découvre l'AJAX et
alors il existe, entre bien d'autres L’objet XMLHttpRequest

;O)
Messages postés
2
Date d'inscription
mardi 9 novembre 2010
Statut
Membre
Dernière intervention
19 novembre 2010

function actualiserPlateau() 
{ 
var XHR=creationXHR(); 
if(XHR==null) { 
alert("Impossible d'utiliser Ajax avec votre navigateur."); 
} 
else 
{ 
XHR.open("GET","ajax_afficher_plateau.php",false); 
XHR.onreadystatechange = function() 

alert(''); 

if(XHR.readyState==4 && (XHR.status==0 || XHR.status==200)) { 
remplacerContenu("plateau",XHR.responseText); 
}
} 
XHR.send(null); 
} 
Messages postés
2
Date d'inscription
mardi 9 novembre 2010
Statut
Membre
Dernière intervention
19 novembre 2010

Pense à implémenter ton code...

function actualiserPlateau() 
{ 
var XHR=creationXHR(); 
if(XHR==null) { 
alert("Impossible d'utiliser Ajax avec votre navigateur."); 
} 
else 
{ 
XHR.open("GET","ajax_afficher_plateau.php",false); 
XHR.onreadystatechange = function() 

alert(''); 

if(XHR.readyState==4 && (XHR.status==0 || XHR.status==200)) { 
remplacerContenu("plateau",XHR.responseText); 
}
} 
XHR.send(null); 
}


function creationXHR() 
{ 
var XHR=null; 
if(window.XMLHttpRequest || window.ActiveXObject){ 
if(window.ActiveXObject){ 
try 
{XHR=new ActiveXObject("Msxml2.XMLHTTP");} 
catch(e) 
{XHR=new ActiveXObject("Microsoft.XMLHTTP");} 
}
} 
else{ 
XHR=new XMLHttpRequest(); 
if(XHR.overrideMimeType){
XHR.overrideMimeType('text/xml');
} 
else{
alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
return null;
}
} 
return XHR; 
}

Messages postés
149
Date d'inscription
mardi 7 janvier 2003
Statut
Membre
Dernière intervention
24 novembre 2010
2
Merci pour la mise en forme : mon fichier est bien implémenté, c'est le copier/coller qui n'est pas bien passé...

Je ne suis pas sur de voir une modif par contre...
Si ce n'est les accolades qui ont disparu de la fonction anonyme... c'est normal ? Parce que le alert (qui est un test simplement pour vérifier que ca rentre bien dans la fonction) et le If(XHR.readystate...) sont censés être exécuté dans la fonction...

Vous l'avez compris, je découvre l'AJAX et le javascript (dont je n'ai que quelques notions basiques) et j'ai copier ce code d'un bouquin, mais je ne comprends pas ce qui ne fonctionne pas !

Merci pour votre aide en tout cas !
Messages postés
149
Date d'inscription
mardi 7 janvier 2003
Statut
Membre
Dernière intervention
24 novembre 2010
2
Merci pour votre aide !

Il me semble que j'avais déjà testé le passage de ce paramètre à true, mais ca n'y a rien changé, je vais retester ça, même si je ne vois pas bien pouquoi ca ne déclencherai pas le "onstatechange" et donc que ca ne lancerait pas la function anonyme, mais je vais essayer !

Merci pour le lien, je suis bien conscients qu'une multitude de scripts existe avec des fonctions plus ou moins avancées sur la gestion du httprequest, mais c'est juste les infime variations entre ses scripts que je n'arrive pas à décoder qui me perde un peu... Je jetterai un oeil à ton lien pour comparer avec mes versions des fonctions !

Encore merci !
Messages postés
149
Date d'inscription
mardi 7 janvier 2003
Statut
Membre
Dernière intervention
24 novembre 2010
2
Merci !
Donc effectivement il fallait passer la fonction en asynchrone...

Merci encore !
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
17
Bonjour,
...et j'ai copier ce code d'un bouquin,...
tu avais quand même du modifier quelque chose ou alors le bouquin est complètement n....

;O)

Le principal, c'est l'essentiel ou inversement.
Messages postés
149
Date d'inscription
mardi 7 janvier 2003
Statut
Membre
Dernière intervention
24 novembre 2010
2
Probablement... Avec tous mes essais, je ne sais plus trop, mais certainement !

Encore merci !