COMMUNICATION AVEC LE SERVEUR EN MODE ASYNCHRONE(XMLHTTPREQUEST)

Signaler
Messages postés
20
Date d'inscription
mardi 20 avril 2004
Statut
Membre
Dernière intervention
7 mai 2014
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
Bonjour, j'ais un problème assez simple, dans les lignes ci-dessous CQD ou SOS ne s'affiche pas...

(ajax-get.html)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr" lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <link type="text/css" rel="stylesheet" href="http://127.0.0.1/MiseEnPage.css"/>
        <script language="JavaScript">
            function submitForm()
            {
                compt=1;
                while(compt<5)
                {
                    if (compt==4)
                    {
                    break;
                    }
                    //document.write("The cartoon number "+compt+" is : "+dojo[compt]+"
");
                    document.write("come quick, distress
");
                    compt++;
                }
                var req = null;
                var dojo=new Array(4);
                document.write("");
                document.write("Started...
");
                if (navigator.appName=="Netscape")  // ( window . XMLHttpRequest )  // Firefox
                {
                    document.write("Netscape
");
                    req = new XMLHttpRequest();
                }
                else
                if (navigator.appName=="Microsoft Internet Explorer") //  ( window . ActiveXObject ) // Internet Explorer
                {
                    document.write("Microsoft Internet Explorer
");
                    req = new ActiveXObject("Microsoft.XMLHTTP");
                }
                // Le problème commence la ligne ci-dessous
                /*if (navigator.appName=="Netscape")  // ( window . XMLHttpRequest )  // Firefox
                {
                    req = new XMLHttpRequest();
                    document.write("Netscape
");
                }
                else
                if (navigator.appName=="Microsoft Internet Explorer") //  ( window . ActiveXObject ) // Internet Explorer
                {
                    req = new ActiveXObject("Microsoft.XMLHTTP");
                    document.write("Microsoft Internet Explorer
");
                    else
                    { // XMLHttpRequest non supporté par le navigateur
                        document.write( "Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
                    }
                }
                //req.onreadystatechange = function()
                req.open("GET", "data.xml", true); /*le premier paramètre est la méthode, le deuxième est le nom du dossier dont on va retourner le résultat et le troisième sert a dire que c'est en mode asynchrone*/
                //req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                //{
                    if(req.readyState == 4)
                    {
                        if(req.status == 200)
                        {
                            document.write("CQD
");
                        }
                        else
                        {
                            document.write("SOS
");
                        }
                    }
                //}
                ;
                // la zone du problème se termine la ligne ci-dessus*/
                req.send(null);
            }
        </script>
    </head>
   
        <script language="JavaScript">
                compt=1;
                dojo=new Array(4);
                dojo[1]="Save";
                dojo[2]=" our ";
                dojo[3]="souls";
                while(compt<5)
                {
                    if (compt==4)
                    {
                    break;
                    }
                    document.write(dojo[compt]+"
");
                    compt++;
                }
        </script>
        <FORM name="ajax-get.html" method="POST" action="">
           
           
           

        </FORM>
   
</html>

sachant qu'une fois le prob règlé, je pourrais obtenir l'affichage des données sotké dans data.xml
(data.xml)

<?xml version="1.0" encoding="utf-8"?>
<dvd>   
   
        <title>Mononoke Hime</title>
        <director>Hayao Miyazaki</director>
        14,99

   
   
        <title>Tonari no Totoro</title>
        <director>Hayao Miyazaki</director>
        19,99

   
   
        <title>Blood, The Last Vampire</title>
        <director>Hiroyuki Kitakubo</director>
        11,99

   
</dvd>

11 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour,

    rien contrôlé ni testé...

    simplement, dans submitForm, on trouve des document.write
        ça efface la page, toute la page, y compris le javascript.

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
20
Date d'inscription
mardi 20 avril 2004
Statut
Membre
Dernière intervention
7 mai 2014

quand je clique sur submit, j'ais quand même:

come quick, distress
come quick, distress
come quick, distress
"l'image .gif"
started...
Netscape
               
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
ben... oui....   ce sont les document.write.
regarde ce qu'il reste dans ta page ( à part come quick, distress ... )
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
20
Date d'inscription
mardi 20 avril 2004
Statut
Membre
Dernière intervention
7 mai 2014

J'ais remplacé les document wirte par des Div... dont un exemple
"

";

et cela change rien au prob...
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
??   tu as sucré tous les document.write ?

ah... et je viens de voir.. du xml ?
    ton souci est avec IE ?
        oui : il faut utiliser new ActiveXObject("microsoft.XMLDOM");
        non : on peut voir où tu en est de ta source ?

et aussi :
FireFox
, regarder la "console d'erreurs"
Outils / Console d'erreurs
et mieux : télécharger mon Site] [M'écrire] [Laisser une adresse Mail, en évitant les spams]
Messages postés
20
Date d'inscription
mardi 20 avril 2004
Statut
Membre
Dernière intervention
7 mai 2014

J'en suis là:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr" lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <link type="text/css" rel="stylesheet" href="http://127.0.0.1/MiseEnPage.css"/>
        <script language="JavaScript">
            var req = null;
            function submitForm()
            {
                compt=1;
                while(compt<5)
                {
                    if (compt==4)
                    {
                    break;
                    }
                    //document.write("The cartoon number "+compt+" is : "+dojo[compt]+"
");
                    "
come quick, distress

";
                    compt++;
                }
                var dojo=new Array(4);
                "

";
                "
Started...

");
                if (navigator.appName=="Netscape")  // ( window . XMLHttpRequest )  // Firefox
                {
                    "
Netscape

";
                    req = new XMLHttpRequest();
                }
                else
                if (navigator.appName=="Microsoft Internet Explorer") //  ( window . ActiveXObject ) // Internet Explorer
                {
                    "
Microsoft Internet Explorer

";
                    req = new ActiveXObject("Microsoft.XMLHTTP");
                }
                {
                    "

";
                    req.open("GET", "data.xml", true);
                    req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                    if(req.readyState == 4)
                    {
                        "

";
                    }
                    else
                    {
                        "

";
                    }
                }
                // Le problème commence la ligne ci-dessous
                /*if (navigator.appName=="Netscape")  // ( window . XMLHttpRequest )  // Firefox
                {
                    req = new XMLHttpRequest();
                    document.write("Netscape
");
                }
                else
                if (navigator.appName=="Microsoft Internet Explorer") //  ( window . ActiveXObject ) // Internet Explorer
                {
                    req = new ActiveXObject("Microsoft.XMLHTTP");
                    document.write("Microsoft Internet Explorer
");
                    else
                    { // XMLHttpRequest non supporté par le navigateur
                        document.write( "Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
                    }
                }
               
                req.open("GET", "data.xml", true); /*le premier paramètre est la méthode, le deuxième est le nom du dossier dont on va retourner le résultat et le troisième sert a dire que c'est en mode asynchrone*/
                //req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                // la zone du problème se termine la ligne ci-dessus*/
            };
            req.send(null);
        </script>
        <script language="JavaScript">
            function showing()
            {
                while(compt<5)
                {
                    if (compt==4)
                    {
                    break;
                    }
                    //document.write("The cartoon number "+compt+" is : "+dojo[compt]+"
");
                    "
Save Our Souls

";
                    compt++;
                }
                var dojo=new Array(4);
                    if(req.readyState == 4)
                    {
                        if(req.status == 200)
                        {
                            "
CQD

";
                        }
                        else
                        {
                            "
SOS

";
                        }
                    }
                }
                ;
        </script>
    </head>
   
        <script language="JavaScript">
                compt=1;
                dojo=new Array(4);
                dojo[1]="Save";
                dojo[2]=" our ";
                dojo[3]="souls";
                while(compt<5)
                {
                    if (compt==4)
                    {
                    break;
                    }
                    document.write(dojo[compt]+"
");
                    compt++;
                }
        </script>
        <FORM name="ajax-get.html" method="POST" action="">
           
           
           

        </FORM>
   
</html>
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
...
    if(req.status == 200)
                        {
                            "
CQD

";
                        }
                        else

    ça donne des erreurs ça !   ce n'est pas une instruction javascript.
    et regarde le tableau mis dans ma réponse précédente.

<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
36
et tu n'as peut-être pas lu ?
    je me cite :
            ah... et je viens de voir.. du xml ?
                ton souci est avec IE ?
                    oui : il faut utiliser new ActiveXObject("microsoft.XMLDOM");
<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
36
et.... il te reste des document.write... non ?
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
20
Date d'inscription
mardi 20 avril 2004
Statut
Membre
Dernière intervention
7 mai 2014

Désolé pour le silence... je n'étais pas devant mon ordi.

"
CQD

";
certes, ce n'est pas du javascriopt, mais, les doubles quotes font que cela passe

Les document.write qui reste sont dans des zones de commentaires, donc sans incidence.
J'utilise Firefox.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
>> ce n'est pas du javascript, mais, les doubles quotes font que cela passe
    pas du tout !
    ça provoque des erreurs de syntaxe !

>>Les document.write qui reste sont dans des zones de commentaires,
    non plus !
                    document.write("Netscape
");
                    document.write("Microsoft Internet Explorer
");
                    document.write( "Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );

>>J'utilise Firefox.
    c'est  bien, mais lis le tableau :
•————————•——————————————————————————————————————————————————————————•
|FireFox |regarder la "console d'erreurs" |
| | Outils / Console d'erreurs |
| | et mieux, : télécharger FireBug |
•————————•——————————————————————————————————————————————————————————•

                 enfi... ce que j'en dis moi...

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