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