Fonction AJAX qui ne se déclenche pas

Résolu
Shivan0910 Messages postés 149 Date d'inscription mardi 7 janvier 2003 Statut Membre Dernière intervention 24 novembre 2010 - 18 nov. 2010 à 23:07
Shivan0910 Messages postés 149 Date d'inscription mardi 7 janvier 2003 Statut Membre Dernière intervention 24 novembre 2010 - 24 nov. 2010 à 08:37
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

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
19 nov. 2010 à 11:54
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)
3
rurusnbx Messages postés 2 Date d'inscription mardi 9 novembre 2010 Statut Membre Dernière intervention 19 novembre 2010
19 nov. 2010 à 10:35
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); 
} 
0
rurusnbx Messages postés 2 Date d'inscription mardi 9 novembre 2010 Statut Membre Dernière intervention 19 novembre 2010
19 nov. 2010 à 10:40
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; 
}

0
Shivan0910 Messages postés 149 Date d'inscription mardi 7 janvier 2003 Statut Membre Dernière intervention 24 novembre 2010 3
19 nov. 2010 à 10:46
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Shivan0910 Messages postés 149 Date d'inscription mardi 7 janvier 2003 Statut Membre Dernière intervention 24 novembre 2010 3
19 nov. 2010 à 11:59
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 !
0
Shivan0910 Messages postés 149 Date d'inscription mardi 7 janvier 2003 Statut Membre Dernière intervention 24 novembre 2010 3
22 nov. 2010 à 21:48
Merci !
Donc effectivement il fallait passer la fonction en asynchrone...

Merci encore !
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
23 nov. 2010 à 18:58
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.
0
Shivan0910 Messages postés 149 Date d'inscription mardi 7 janvier 2003 Statut Membre Dernière intervention 24 novembre 2010 3
24 nov. 2010 à 08:37
Probablement... Avec tous mes essais, je ne sais plus trop, mais certainement !

Encore merci !
0
Rejoignez-nous