Readystate qui reste à 1

Signaler
Messages postés
23
Date d'inscription
lundi 13 novembre 2006
Statut
Membre
Dernière intervention
6 mars 2009
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
Bonjour à tous,
J'ai fait un peu d'ajax qui me permet de récupérer des data dans une BdD. Avec FireFox tout fonctionne correctement mais avec IE7 le readystate reste bloqué à 1 (j'ai mis un alert) et les data n'apparaissent jamais. Pourtant dans le php qui exécute la requête il y a la création d'un document.xml contenant les données renvoyées et ce fichier se créer avec les bonnes data !
J'ai fouillé sur le Web (et surtout ici) mais je ne trouve rien qui me permette d'avancer.
Si quelqu'un à une piste.......Please help !!!!
Je met mon bout de code :
var http_request = false;
 if (window.XMLHttpRequest)
 { /* Mozilla, Safari, IE7... */
   http_request = new XMLHttpRequest();
   if (http_request.overrideMimeType)
   {
    http_request.overrideMimeType('text/xml; charset=ISO-8859-1');
   }
  }
  else if(window.ActiveXObject)
  { /* IE <7 */
    try{
   http_request = new ActiveXObject("Msxml2.XMLDOM"); /* IE6 */
    }catch(e){
   try{
       http_request = new ActiveXObject("Microsoft.XMLDOM"); /* IE5 */


   }catch(e){}
   }
  }
 if (!http_request)
 {
  alert('Cannot create an XMLHttp instance');
  return false;
 }
 http_request.open('POST', url, true);
 http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=ISO-8859-1");
 http_request.send(param);
 http_request.onreadystatechange = function () 
 {
  if (http_request.readyState != 4)
  {
  alert("readystate="+http_request.readyState);
  }
  else
  {
     alert("readystate="+http_request.readyState);


   if (http_request.status == 200)
   {
 switch (navigateur)
 {
 case "FIREFOX2" :
  results=http_request.responseXML;
  break;
    case "IE7" :
  results=http_request.responseXML;
  break;
 default :
  break; 
 }
 suite(results,idchamp1,idchamp2,listed);
   }
   else
   {
    alert('There was a problem with the request.');
   }
  }
 }
}
La fonction suite générant l'affichage des données renvoyées au travers d'une liste déroulante.
Merci pour votre aide car cela fait deux jours que je passe là-dessus...

JP
A voir également:

7 réponses

Messages postés
111
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
1 août 2008

Salut,


Après une lecture en zig zag de ton code, je te propose de faire le
send après avoir définit le onreadystatechange...(ya peut-être d'autres
erreurs, j'ai pas testé ton code)


<mode pub on>

Tu peut aussi essayer de passer à Prototype, tu ne le regretteras pas !

http://www.javascriptfr.com/codes/CLASSE-AJAX-PROTOTYPE-ROCKS_46941.aspx

<mode pub off>
Messages postés
23
Date d'inscription
lundi 13 novembre 2006
Statut
Membre
Dernière intervention
6 mars 2009

Merci à toi mais j'avais au départ le send après..même punition ! c'est en fouillant sur le net que j'ai vu que certains préconisaient de le mettre avant..j'ai déjà fait du prototypage pour un objet javascript..mais là j'avou que je ne l'avais pas vu ainsi..je vais regarder le lien..je mettrai le résultat des courses ici..

JP
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
je crois que pour IE, le XML n'est pas affichable comme ça
            ni avec http_request.responseXML ou Text.
avec FF d'ailleurs pas tout à fait non plus, même si les "value" s'affichent
           pas les balises.
du xml, n'est pas fait pour être afficher tel qule si ?
on en gère plutôt le contenu.

pas certain non plus qu'avec IE, il ne faille pas utiliser new ActiveXObject('Microsoft.XMLDOM');

ch'tiot exemple (  simplifié )  :    xml.htm

<HTML    Lang="fr">
<HEAD>
<meta http-equiv="content-type"
        content="text/html; charset=ISO-8859-1">
</head>

réponse:

<script>
    var aff=document.getElementById('aff');
    function fin(recu)
    {    aff.innerHTML=
                recu.getElementsByTagName('prenom')[0].firstChild.nodeValue+' '+
                recu.getElementsByTagName('nom')[0].firstChild.nodeValue+"
";
    }
    if ( document.implementation.createDocument )
            {    var requete = new XMLHttpRequest();
                requete.onreadystatechange = function()
                {    if ( requete.readyState == 4 )
                    {    fin(requete.responseXML);
                        aff.innerHTML+=requete.responseText; // pas de balises
                    }
                }
                requete.open('POST','xml.xml',true);
                requete.send(null);
            }
    else    {    var xmlD = new ActiveXObject('Microsoft.XMLDOM');
                xmlD.async=true;
                xmlD.onreadystatechange = function ()
                {     if ( xmlD.readyState == 4 )
                    {    fin(xmlD);   
                        aff.innerHTML+=xmlD;  // rien
                    }
                }
                xmlD.load("xml.xml");
            }
</script>

</html>

le fichier xml :

<?xml version="1.0" encoding="ISO-8859-1"?>
   
        <qui>
            gédéon

            <nom>teuzeumani</nom>
        </qui>
   

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
pour IE il doit bien y avoir un    xmlD.quelquechose pour afficher,
mais pas cherché plus loin, pour moi c'est inutile avec du xml.
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
23
Date d'inscription
lundi 13 novembre 2006
Statut
Membre
Dernière intervention
6 mars 2009

Merci Bultez je vais tester dés lundi...
pour Ralecul..euh j'ai pas tout compris sur le lien prototype..

JP
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
ça fonctionne, ça demande à être peaufiner,
est-ce que ça correspond à ce que tu veux ? tu nous diras.
mais xml et htm "rien à voir".
xml ce sont des données, htm une page affichée dans un navigateur.
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
il est vrai que je n'ai même pas percuté pour les autres navigateurs !
si c'est un fichier xml :

<HTML    Lang="fr">
<HEAD>
<meta http-equiv="content-type"
        content="text/html; charset=ISO-8859-1">
</head>

réponse:

<script>
var aff=document.getElementById("aff");
var xmlD;
function xmlFin()
{    aff.innerHTML=    xmlD.getElementsByTagName("prenom")[0].firstChild.nodeValue+" "+
                        xmlD.getElementsByTagName("nom")[0].firstChild.nodeValue;
}
function xmlCharge()
{    if ( document.implementation && document.implementation.createDocument )
            {    xmlD = document.implementation.createDocument("", "", null);
                xmlD.onload = xmlFin;
            }   
    else     {    if (window.ActiveXObject)
                        {    xmlD = new ActiveXObject("Microsoft.XMLDOM");
                            xmlD.onreadystatechange = function ()
                            {    if (xmlD.readyState == 4)
                                {    xmlFin();    }
                            }
                        }
                else    {    alert('le navigateur ne supporte pas');
                            return;
                        }
            }
    xmlD.load("xml.xml");
}

xmlCharge();
</script>

</html>

"pas d'ajax là dedans"...

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]