Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/07/2006, à 12:10

amadeus

[Résolu]Problème javascript

Bonjour

J'ai suivi un tutorial de mozilla (voir ici) pour apprendre à utiliser Ajax. Malheureusement, il y a un problème bizarroïde que je n'arrive pas à résoudre. Voici le code :

<script type="text/javascript" language="javascript">
	
	function makeRequest(url) {

        var http_request = false;

        if (window.XMLHttpRequest) { // Mozilla, Safari, ...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
                // See note below about this line
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert('Giving up :( Cannot create an XMLHTTP instance');
            return false;
        }
        http_request.onreadystatechange = function() { alert(url); alertContents(http_request); };
        http_request.open('GET', url, true);
        http_request.send(null);

    }
		</script>	
		<script type="text/javascript" language="javascript">
    function alertContents(http_request) {
		alert("test2");
        <script type="text/javascript" language="javascript">
	
	function makeRequest(url) {

        var http_request = false;

        if (window.XMLHttpRequest) { // Mozilla, Safari, ...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
                // See note below about this line
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert('Giving up :( Cannot create an XMLHTTP instance');
            return false;
        }
        http_request.onreadystatechange = function() { alert(url); alertContents(http_request); };
        http_request.open('GET', url, true);
        http_request.send(null);

    }
		</script>	
		<script type="text/javascript" language="javascript">
    function alertContents(http_request) {
		alert("test2");
        <!--if (http_request.readyState == 4) {
            if (http_request.status == 200) {
            		
                var output = http_request.responseText;
								var temp = new Array();
								temp = output.split("LISTOFSR");
								output = temp[1];
								alert(output);
								temp = output.split("---");
								for(var i = 0, i < temp.length(), i++)
								{
									document.forms.jiraform.menuSR.options[i]=new Option('i',temp[i]);
									alert(temp[i]);
								}	
        		    } else {
        	        alert('There was a problem with the request.');
         			   }
        }-->

    }
	</script>

Vous remarquez déjà qu'il y a à un moment un </script>, suivi par une nouvelle balise d'ouverture de  script exactement pareil que celle d'avant. Normalement je ne devrais pas avoir besoin de faire ça (d'ailleurs dans l'exemple du tutorial, ils ne l'ont pas mis). Mais en l'enlevant, je ne peux plus faire appel à la première fonction (si je fais alert("test");makeRequest("www.google.fr") je verrai bien l'alerte, mais la fonction makeRequest ne sera pas exécuté.

Deuxième problème, l'appel à la fonction alertContents depuis makeRequest donne un résultat similaire: Je vois bien le alert(url), mais la fonction alertContents, qui est un simple alert("test2"), n'est pas exécuté. (A la base, alertContents est plutot la partie qui se trouve en commentaire. Et même en copiant/collant ces instruction à la place de l'appel à la fonction alertContents dans makeRequest, ça ne marche pas)

S'il vous plaît aidez moi :'(

Dernière modification par amadeus (Le 19/07/2006, à 14:37)


Dumbledore returns from the dead and declares it to be hammertime, Harry proceeds to break it down, Voldemort is unable to touch this.

Hors ligne

#2 Le 19/07/2006, à 13:46

xever

Re : [Résolu]Problème javascript

je suis pas un pro de javascript mais je trouve bizarre cette partie de ton code :

        <script type="text/javascript" language="javascript">
    function alertContents(http_request) {
        alert("test2");
        <script type="text/javascript" language="javascript">

je dirais qu'il faut fermer la balise script avant d'en ouvrir une autre, et accessoirement finir ta fonction alertContents(http_request)

genre

        <script type="text/javascript" language="javascript">
    function alertContents(http_request) {
        alert("test2");
    }
   </script> 
        <script type="text/javascript" language="javascript">

je te conseille de mettre tes fonctions javascripts dans des fichiers plutot que dans le html, mais ca c'est pas oblilgé

Hors ligne

#3 Le 19/07/2006, à 13:51

amadeus

Re : [Résolu]Problème javascript

Euh comment tu as fait pour trouver cette partie dans mon code? moi je vois

<script type="text/javascript" language="javascript">
    function alertContents(http_request) {
        alert("test2");
        <!--if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                    
                var output = http_request.responseText;
                                var temp = new Array();
                                temp = output.split("LISTOFSR");
                                output = temp[1];
                                alert(output);
                                temp = output.split("---");
                                for(var i = 0, i < temp.length(), i++)
                                {
                                    document.forms.jiraform.menuSR.options[i]=new Option('i',temp[i]);
                                    alert(temp[i]);
                                }    
                    } else {
                    alert('There was a problem with the request.');
                        }
        }-->

    }
    </script>

ce qui devien en fait

<script type="text/javascript" language="javascript">
    function alertContents(http_request) {
        alert("test2");
    }
    </script>

tout va bien non?
Et sinon comment on fait pour mettre les fonctions dans un fichier?

Dernière modification par amadeus (Le 19/07/2006, à 13:56)


Dumbledore returns from the dead and declares it to be hammertime, Harry proceeds to break it down, Voldemort is unable to touch this.

Hors ligne

#4 Le 19/07/2006, à 14:37

amadeus

Re : [Résolu]Problème javascript

Trouvé.
alors
1- les commentaires en javascript, c'est comem en C, pas comme en HTML !
2- Dans les boucles FOR, c'est des ; et pas des ,
3-La longueur de l'array c'est avec nom.length et non pas nom.length()
Et ça marche  smile


Dumbledore returns from the dead and declares it to be hammertime, Harry proceeds to break it down, Voldemort is unable to touch this.

Hors ligne