IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Script qui s'ex�cute 2 fois!


Sujet :

JavaScript

  1. #1
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par d�faut Script qui s'ex�cute 2 fois!
    Salut,

    J'essaie de remplir dynamiquement une liste d�roulante suite � une requ�te HTTP. Cette requ�te me retourne une r�ponse correcte. Seulement le script est ex�cut� 2 fois sans raison apparente. Si je place une alert() n'importe o� dans le script, il ne s'ex�cute qu'une fois!!!

    Le r�sultat c'est que ma liste est doubl�e. D'ailleurs on le constate avec ma variable test initialis�e � 0 et incr�ment�e dans la fonction appel�e par l'�v�nement (SendQuery).
    Si j'ai une alert test = 1, si je n'en mets pas test passe � 2!
    Voici le code:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <input type="text" name="List0" class="saisie" size=10  maxlength="8" ID="Text8" onkeyup="SendQuery(this.value);">
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    /***********************************************/
    /****			Liste emploi				****/
    /***********************************************/
    function Initialize() {
    	try {
    		req= new ActiveXObject("Msxml2.XMLHTTP");
    	} catch(e) {
    		try {
    			req = new ActiveXObject("Microsoft.XMLHTTP");
    		} catch(oc) {
    			req=null;
    		}
    	}
     
    	if(!req &&typeof XMLHttpRequest!="undefined") {
    		req = new XMLHttpRequest();
    	}
    }
    var test = 0;
    function SendQuery(arg) {
    	if (arg!="" && arg.length==8) {
    		test++;
    		Initialize();
    		var url = "emploi_lst.asp?arg=" + arg;
    		if (req!=null) {
    			req.onreadystatechange = Process;
    			req.open("GET", url, true);
    			req.send(null);
    		}
    	} else {
    		HideEmploi();
    	}
    }
     
    function Process() {
    	if (req.readyState == 4) {
    		if (req.status == 200) {
    			if(req.responseText=="") {
    				HideEmploi();
    			} else {
    				ShowEmploi();
    				AffEmploi(req.responseText);
    			}
    		}/* else {
    			document.getElementById("Emploi0").innerHTML = "Un problème internet est survenu:" + req.statusText;
    		}*/
    	}
    }
     
    function HideEmploi() {
    	document.getElementById('Emploi0').style.display = "none";
    	document.getElementById('emploi_saisi').style.display = "none";
    }
     
    function ShowEmploi() {
    	document.getElementById('Emploi0').style.display = "";
    	document.getElementById('emploi_saisi').style.display = "";
    }
     
    function AffEmploi(requete) {
    	var tab = requete.split("##");
    	var exist = eval(tab[0]);
    	var id = eval(tab[1]);
    	var lib = eval(tab[2]);
     
    	if (id[0] && lib[0]) {
    		var element = document.createElement("option");
    		element.appendChild(document.createTextNode(''));
    		element.value = 0;
    		document.getElementById('Emploi0').appendChild(element);
    		for (i in id) {
    			var element = document.createElement("option");
    			element.appendChild(document.createTextNode(lib[i] +' '+ test)); // ON CONSTATE ICI QUE TEST RESTE A 1 OU PASSE A 2
    			element.value = id[i];
    			document.getElementById('Emploi0').appendChild(element);
    		}
    	} else {
    		document.getElementById('Emploi0').removeChild();
    		HideEmploi();
    	}
    }
    Voyez-vous ce qui ne va pas?

    Merci par avance.

    note: le code n'est pas fini, veuillez s'il vous pla�t ne pas vous attarder sur d'autres probl�mes �ventuels.

  2. #2
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : Consultant informatique
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par d�faut
    Bonjour,

    J'ai essay� vite fait ton code , et je ne suis pas sur d'avoir tout compris de ce que tu demandes.

    En attendant le pb ne peut il pas venir du fait que dans ta fonction SendQuery , il y a � la fois un open puis un send , et peut �tre que la requ�te est envoy�e 2 fois � ce moment l� ?

  3. #3
    Expert confirm�
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par d�faut
    y a quoi comme chaine dans ton responseText ?

  4. #4
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par d�faut
    Merci de vous int�resser � mon probl�me.

    siddh > voici ce qu'il y a dans responseText
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1##new Array("3-1","3-2","3-8","3-6","3-3","3-7","3-5","3-4","3-9")##new Array("Animateur","Animateur technicien, professeur","Comptabilité et gestion","Directeur, resp.de service admin.","Formateur","Information et communication","Personnel pédagogique occasionnel","Responsable de secteur, de service ou d\\'équipement","Secrétariat, accueil, personnel administratif")
    elitost > je ne suis pas expert mais cela semble �tre la proc�dure normale.

  5. #5
    Expert confirm�
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par d�faut
    dans la mesure ou ton tableau contient plusieurs elements c est peut etre normal que ton indice de parcours soit plus grand que 1 non ? tu fais une boucle ca me semble logique

  6. #6
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par d�faut
    Je ne vois pas de quel indice et de quelle boucle tu parles. (Normal dans ma t�te c'est correct)

  7. #7
    Expert confirm�
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par d�faut
    ca serais t y pas une boucle ?

  8. #8
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par d�faut
    Oui une boucle sur le tableau id et c'est donc normal. As-tu vu o� j'incr�mente ma variable test? Je l'incr�mente dans SendQuery et non dans la boucle.
    Or mon probl�me est que j'appelle normalement SendQuery qu'une fois. Je devrais avoir test = 1 malheureusement j'ai test = 2.
    Ce que tu vois dans la boucle n'est qu'une concat�nation.

  9. #9
    Expert confirm�
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    if (arg!="" && arg.length==8) {
    visiblement tu test la longueur de l'argument, j'en deduit que tu lui passe une chaine que tu tapes au clavier.

    le onkeyup se declanchera donc plusieurs fois et executera donc plusieurs fois ta methode

  10. #10
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par d�faut
    D�sol� mais je ne vois pas. Ma fonction ne s'ex�cute QUE quand la cha�ne � une longueur de 8. Quels autres cas vois-tu?
    Je pense que tu n'as pas saisie mon probl�me. Le script s'ex�cute 2 fois et seulement 2 fois et non n fois qui pourraient provenir du onkeyup ou de la boucle for.

  11. #11
    Expert confirm�
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par d�faut
    oui autant pour moi, on va dire que j etais pas reveill�

    la franchement c'est bizarre ton truc,
    a tout hasard, tu validerais pas par entr�e ou en faisant une tabulation ?
    ce qui expliquerais le onkeyup et que ca reste a 8 chars ?

  12. #12
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par d�faut
    Bien jou� c'est exactement �a. Je faisais mon test avec un copier/coller (directement la valeur � 8 carac�tres). Mais si je m'amuse � taper sur la barre espace plusieurs fois j'ai ma liste qui appara�t autant de fois que que j'ai tap� espace (j'ai un maxlength=8 pour expliquer le ph�nom�ne).

    T'es meilleur le matin que le soir .

    Maintenant faut que je r�flechisse comment contrer �a. Si t'as une id�e, je suis preneur. En sachant qu'� la base je souhaite remplir ma liste quand le champs atteint 8 caract�res sans valider quoique ce soit (entr�e ou tabulation comme tu l'as dit)

  13. #13
    Expert confirm�
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par d�faut
    peut etre en te mettant un flag a tester.

    tu te met un booleen a false que tu met a true des que t as 8 chars et tu rajoutes un test dessus.

    si 8 char et flag false alors tu execute ton truc sinon return

  14. #14
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par d�faut
    C'est exactement ce que j'ai fait! j'ai r�utilis� ma variable test justement.
    Merci pour ton aide.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Script qui s'ex�cute seul r�guli�rement
    Par xess91 dans le forum Langage
    R�ponses: 1
    Dernier message: 02/09/2009, 21h15
  2. code qui s excute une fois
    Par sisna dans le forum D�buter avec Java
    R�ponses: 2
    Dernier message: 20/08/2008, 11h35
  3. R�ponses: 8
    Dernier message: 16/03/2007, 16h43
  4. R�ponses: 1
    Dernier message: 12/03/2007, 19h56
  5. Script qui s'ex�cute deux fois ?
    Par ben53 dans le forum Langage
    R�ponses: 1
    Dernier message: 29/01/2007, 15h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo