Ma fct ajax fonctionne sur IE mais avec FF

Fermé
ghizlanekh Messages postés 46 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 14 décembre 2012 - 29 mai 2008 à 12:44
ghizlanekh Messages postés 46 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 14 décembre 2012 - 30 mai 2008 à 15:06
Bonjour,
je me permet de vous posez une qutre question, car j'ai cherché partout mais je n'ai pas trouvé de réponse:
je suis une débutante en Ajax et je l'utilise pour la création de mon site.
le problèmes c'est ça marche bien sur IE mais sur FF plus rien ne marche.
je vous envoie le code pour que vous puissiez voir le problème.
function updateValue_codeclient_listeclient()
{

var xhr = getXhr();

xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && xhr.status == 200)
{
leselect = xhr.responseText;
longueurCible = document.getElementById("code").firstChild.length;
document.getElementById("code").firstChild.replaceData(0, longueurCible, "leselect");


//document.getElementById('code').innerHTML = leselect;
}
}



function getXhr()
{
var xhr = null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject)
{ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else
{ // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr;
}







}

j'ai commencé par créer une fonction qui teste tous les navigateurs après j'ai trouvé cette fonction sur un site et je lai utilisé, je pense que le problème viens de xhr.readyState == 4 && xhr.status == 200 car j'ai utilisé des alert pour le test en entrant dans le if aucun alert ne fonctionne.


Merci pour votre aide.

2 réponses

Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
29 mai 2008 à 15:50
Salut

t'a bien verifié avec un alert par exemple que sous firefox il fais bien un xhr = new XMLHttpRequest(); ?

sinon il manque des choses la, comment fais tu ton open et ton send ?
0
if(xhr.readyState == 4 && xhr.status == 200) indique que la page appelée est construite et prête à être utilisée, si tu n'appelle pas de page (avec open et send), ca ne peux pas marcher...

Je me demande bien ce qui pouvait marcher sous IE... (menfin il fait tellement de trucs bizarre)
0
ghizlanekh Messages postés 46 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 14 décembre 2012
29 mai 2008 à 17:33
function updateValue()
{

var xhr = getXhr();
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && xhr.status == 200)
{
leselect = xhr.responseText;
document.getElementById('marque').innerHTML = leselect;

}
}


xhr.open("POST","update.php",true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

sel = document.getElementById(article);
idart = sel.value;

xhr.send("IDART="+idart);
}


dsl j'ai fait un copier coller de ma fct mais j'ai pas pris tout.sous IE ca marche comme mais comme FF ne connait pas inerHTML je les modifié.
là on a bien un open et un send.
c pas IE qui est bizzare mais c moi qui a fait un copier incomplet.
dsl
merci pour votre réponse
0
Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206 > ghizlanekh Messages postés 46 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 14 décembre 2012
29 mai 2008 à 20:18
document.getElementById('marque').innerHTML = leselect;

marque c'est quoi ?

si c'est une balise select non il ne faut pas le faire avec innerHTML sa ne marchera pas avec Firefox
0
ghizlanekh Messages postés 46 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 14 décembre 2012 > Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016
29 mai 2008 à 20:41
oui marque est un select.
je sais que innerHtml ne fonctionne pas avec FF mais juste j'ai donner laversion qui marche avec IE
je pense qu'il faut mettre
longueurCible = document.getElementById("marque").firstChild.length;
document.getElementById("marque").firstChild.replaceData(0, longueurCible, "leselect");

mais le problèmes est avant meme l'execution de cette ligne j'ai mi un alert de xhr ca marche mais alert (xhr.readyState);il m'affiche 1 ce qui fait quil n'entre jamais dans le if.
0
Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206 > ghizlanekh Messages postés 46 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 14 décembre 2012
29 mai 2008 à 20:50
Depend ou tu met ton alert, si l'alert tu le met apres le send a mon avis il n'affichera plus 1 mais 2

pour ajouter des valeurs a un select par javascript il faut utiliser

document.getElementById('marque').options[0] = new Option('texte affiché','value');

il créé donc une nouvelle option dans ta liste select a l'index 0 avec les parametres donnés
0
ghizlanekh Messages postés 46 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 14 décembre 2012 > Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016
30 mai 2008 à 12:58
oui.
j'ai un site qui ne marche qu'avec Ajax.
car il faut actualiser plusieurs champ en remplissant un.
donc avec IE ça marche très bien.
avec FF j'ai qq problèmes déjà FF il comprend le innerHTML.
car quand j'essaie d'actualiser quatres listes deroulantes à partir d'un champ ca le fait bien et prt jai utilisé innerHTML mais quand j'essai d'actualiser par la meme fct un champ texte il marche que la première fois.
cad quand je rempli mon premier champ il actualise tous puis quand je le rempli d'un nouveau nombre il m'actualise mes liste mais pas mon champ il reste comme il est.

je ne voie aucune différence entre un champ text et un select surtout que les actualise du meme champ text.
si tu veux plus de détail je peux te poster mes fct.

merci.
0