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 :

Alert et éxecution du code


Sujet :

JavaScript

  1. #1
    Membre éprouvé Avatar de rieppe
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Par défaut Alert et éxecution du code
    Bonjour à tous.

    Je suis en train de réaliser un formulaire pour mon application web, et j'ai un problème qui ne m'est jamais arrivé. Ne vous moquez pas de moi hein, je développe assez peu en javascript (en gros je m'y met pour le coté Ajax).

    Donc mon problème est le suivant :

    J'ai développé une fonction pour recueillir des infos dans la base de données avec un objet XMLHttpRequest qui envoie des paramètre a un script php (qui lui accède a la base de données). Pendant le développement j'ai mis des "alert" à différents endroits ou je voulais voir si mes tests passaient et si la fonction était bien appelée.

    Et là tout baigne, ca fonctionne, mes listes se mettent à jour avec les valeurs contenues dans la base de données toussa.

    Maintenant, tout content, j'enlève mes "alert" qui ne me servaient qu'au débugage. Et là surprise, sans le "alert" qui me signalait le passage dans la fonction, plus rien ne fonctionne. Que je le mette en commentaire ou que je supprime la ligne, rien a faire mon script s'éxecute avec mais pas sans lui.

    Je désespère un peu :/. Passer 3 heures sur un foutu "alert" c'est quand même rageant.

    Si l'un d'entre vous a une quelconque solution a proposer, je suis près a tout accepter là ^^

    PS: Si c'est pas clair, je peux réexpliquer enfin essayer de réexpliquer x)

  2. #2
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par rieppe
    Maintenant, tout content, j'enlève mes "alert" qui ne me servaient qu'au débugage. Et là surprise, sans le "alert" qui me signalait le passage dans la fonction, plus rien ne fonctionne. Que je le mette en commentaire ou que je supprime la ligne, rien a faire mon script s'éxecute avec mais pas sans lui.
    http://javascript.developpez.com/faq...jax.asynchrone

    Tu peux nous montrer le code ou tu utilises ton objet XHR?

  3. #3
    Membre éprouvé Avatar de rieppe
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Par défaut
    Voilà le code que j'utilise.

    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
    	function afficheQuestions()
    	{
    		//alert('Passage dans la fonction afficheQuestions()');
    		getXhr();
    		// On défini ce qu'on va faire quand on aura la réponse
    		xhr.onreadystatechange = function()
    		{
    			// On ne fait quelque chose que si tout reçut et serveur ok
    			if(xhr.readyState == 4 && xhr.status == 200)
    			{
    				leselect = xhr.responseText;
    				// innerHTML pour rajouter les options a la liste
    				document.getElementById('LesQuestions').innerHTML = leselect;
    			}
    		}
     
    		xhr.open("POST","scripts/TrouveLesQuestions.php",true);
    		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    		// ne pas oublier de poster les arguments
    		// ici, l'id du processus
    		Processus = document.getElementById('Processus');
    		idProcessus = Processus.options[Processus.selectedIndex].value;
     
    		SousProcessus = document.getElementById('ListeSousProcessus');
    		idSousProcessus = SousProcessus.options[SousProcessus.selectedIndex].value;
     
    		if ( idProcessus != 0 )
    		{
    			if ( idSousProcessus != 0 )
    			{
    				//alert('afficheQuestion() lance la requête');
    				xhr.send("idProcessus="+idProcessus+"&idSousProcessus="+idSousProcessus);
    			}
    			else
    			{
    				document.getElementById('LesQuestions').innerHTML = "";
    			}
    		}
    		else
    		{
    			document.getElementById('LesQuestions').innerHTML = "";
    		}
    	}
    Comme je l'ai dit plus haut, si j'enleve le premier "alert", ca ne fonctionne plus.

  4. #4
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par rieppe
    Voilà le code que j'utilise.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    		//alert('Passage dans la fonction afficheQuestions()');
    Comme je l'ai dit plus haut, si j'enleve le premier "alert", ca ne fonctionne plus.
    Celui-là d'alert qui fait tout marcher?

    Essaye de le remplacer par un alert au niveau de ton xhr.send pour voir le contenu des arguments que tu donnes à ta requete?

    Est-ce que tu peux vérifier coté serveur quelles sont les requetes qui parviennent, et avec quels arguments?

  5. #5
    Membre éprouvé Avatar de rieppe
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Par défaut
    Citation Envoyé par denisC
    Celui-là d'alert qui fait tout marcher?
    Oui celui-ci

    Essaye de le remplacer par un alert au niveau de ton xhr.send pour voir le contenu des arguments que tu donnes à ta requete?

    Est-ce que tu peux vérifier coté serveur quelles sont les requetes qui parviennent, et avec quels arguments?
    Ce sont des actions que j'ai déjà faites pendant mon développement.

    Je viens de retester. Mes arguments sont bien corrects. Un petit alert m'indique leurs valeurs.

    Coté serveur php aussi un petit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $_POST['idProcessus'];
    m'affiche la valeur que m'avait donné le alert :/

  6. #6
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    ... la solution à ce problème est simple...
    ... redontante...
    ... fatiguante même...
    ... et à coups sur bonne !

    Bien sur, tu n'y peux rien si le tutoriel de siddh contient des fautes mais bon...
    Attendez, je cherche un lien vers un des autres threads...
    Je reviens !

  7. #7
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Bonne lecture !
    Citation Envoyé par FremyCompany
    j'ai suivi le tutorial suivant:
    http://siddh.developpez.com/articles/ajax/
    Très mauvaise idée, y a une faute dedans (non prise en charge d'un cas théorique et fonction getXhr mal optimisée) qui a déjà couté de nombreuses heures à certaines personnes lors pour la correction... vu que le code en lui-même est bon ! Il suffit juste de corriger quelques petites fautes...

    Remplacer la méthode getXhr par le code suivant (plus long mais plus efficace, les temps de renvoi sont quasiment identiques (le mien étant sensiblement plus rapide) excepté lors de la première instanciation sur IE (ou mon script est légèrement plus long))
    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
    // Renvoie le texte de l'objet ActiveXObject le plus récent depuis une liste
    var pickRecentProgID = function (idList){
    	// found progID flag
        var bFound = false;
        for(var i=0; i < idList.length && !bFound; i++){
            try{
                var oDoc = new ActiveXObject(idList[i]);
                o2Store = idList[i];
                bFound = true;
            }catch (objException){
                // trap; try next progID
            };
        };
        if (!bFound)
    		throw ("Aucun ActiveXObject n'est valide sur votre ordinateur, pensez à mettre à jour votre navigateur");
        idList = null;
        return o2Store;
    }
     
    // Retourne un nouvel objet XmlHttpRequest
    var GetXmlHttpRequest_AXO=null
    var GetXmlHttpRequest=function () {
    	if (window.XMLHttpRequest) {
    		return new XMLHttpRequest()
    	}
    	else if (window.ActiveXObject) {
    		if (!GetXmlHttpRequest_AXO) {
    			GetXmlHttpRequest_AXO=pickRecentProgID(["Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]);
    		}
    		return new ActiveXObject(GetXmlHttpRequest_AXO)
    	}
    	return false;
    }
     
    // Compatibilité avec le tuto
    getXhr=GetXmlHttpRequest;
    Ensuite la vraie faute, dont la correction dans le tutoriel devrait, j'espère, ne plus trop tarder (je donne ici un exemple de fois ou je propose la correction, comme vous pouvez le constater, il est tjrs possible de procédant par essai-erreur de "corriger" la faute, mais ce n'est que virtuel car sur une connection plus lente la faute est souvent inévitable) :
    XmlHttpRequest en parallèles

    A noter tout de même que le tutoriel n'est pas la cause de ton problème et la solution qui t'a été donnée est admirable !
    En effet, pour corriger le problème j'utilisais plutot la solution suivante (qui marchait tout aussi bien malgré tout) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    url += "&currentDate=" + escape(new Date())

  8. #8
    Membre éprouvé Avatar de rieppe
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Par défaut
    Bonjour,

    Tout d'abord, merci FremyCompany pour ta réponse.

    Je voudrais juste une précision histoire d'avoir bien compris. Mon problème était d'avoir une seul variable XMLHttpRequest pour l'ensemble de mes fonctions ?

    Quand j'ai mis en place le code que tu m'as donné, le même problème persistait, j'ai alors remplacer la variable déclarée en dehors des fonctions (var xhr = null; ) tout en haut de mon script, par une variable locale a chaque fonction.Depuis cela ca fonctionne.

  9. #9
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Citation Envoyé par rieppe
    j'ai alors remplacer la variable déclarée en dehors des fonctions (var xhr = null tout en haut de mon script, par une variable locale a chaque fonction.Depuis cela ca fonctionne.
    C'est en effet le problème majeur du script... à chaque nouvelle requete, l'ancienne est écrasée... Si tu rencontres d'autres problèmes, n'hésite pas à continuer le post

  10. #10
    Membre éprouvé Avatar de rieppe
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 115
    Par défaut
    Citation Envoyé par FremyCompany
    C'est en effet le problème majeur du script... à chaque nouvelle requete, l'ancienne est écrasée... Si tu rencontres d'autres problèmes, n'hésite pas à continuer le post
    Pas de problème merci beaucoup.

Discussions similaires

  1. éxecution de code après un délai
    Par saibri dans le forum jQuery
    Réponses: 3
    Dernier message: 09/11/2011, 18h51
  2. éxecution du code source pas à pas
    Par guaguanco dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 07/06/2010, 16h05
  3. [WD14] Application bloquée après éxecution de code
    Par clark_gable dans le forum WinDev
    Réponses: 10
    Dernier message: 17/04/2010, 17h26
  4. un programme qui éxecute le code qui est dans un txt ou script SQL?
    Par tibofo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 06/11/2008, 18h50
  5. [débutant]impossible d'éxecuter avec Code::blocks!
    Par Antigonos Ier Gonatas dans le forum Code::Blocks
    Réponses: 6
    Dernier message: 31/05/2006, 19h53

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