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

jQuery Discussion :

besoin de delai (alert) pour l'accomplissement du script


Sujet :

jQuery

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut besoin de delai (alert) pour l'accomplissement du script
    Bonjour,

    Désolé pour l'intitulé pas très explicite, mais je savais pas du tout comment formuler mon problème ...

    J'ai un gros soucis depuis hier qui me rend fou au niveau d'un bout de code.

    Alors voila, en gros je récup des données d'un fichier XML que je place dans un tableau. Ensuite je boucle sur le tableau que je place dans un <select>.
    Sauf que cela fonctionne QUE si je place un alert avant (meme un simple alert('hello') fait fonctionner mon code). Si je le met pas, mon <select> ne se remplis pas du tout ... (j'ai essayé avec un console.log, mais ça fonctionne pas).

    J'ai fais plusieurs test genre, mettre la requête en async:false, sortir le for de la requête AJAX etc etc mais rien ne marche ...

    De plus juste après le each(), je boucle mon tableau en faisait un console.log, et je vois bien toutes mes valeurs ...

    Mon <select> se rempli QUE si y'a un alert avant ... Oo

    Voici le code :

    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
     
    $.ajax({
    		type: "GET",
    		dataType: "xml",
    		url: "xml/switch.xml",
    		success: function(xml) {
    			$(xml).find('switch').each(function() {
    				switch_cr.push($(this).children('nom').text());
    			});
     
    			for(var j=0; j<switch_cr.length; j++) {
    				if(switch_cr[j] != '') {
    					//alert('valeur '+j+' : ' + switch_cr[j]);
    					$('select[name=switch_cr]').append('<option value="'+switch_cr[j]+'">'+switch_cr[j]+'</option>');
    				}
    			}
    		}
    	});

    Si quelqu'un voit où est le soucis, svp sauvez moi avant que je ne devienne fou ...

    Merci d'avance

  2. #2
    Membre confirmé Avatar de tidus_6_9_2
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Par défaut
    Post déjà dans le forum JQuery ^^

    ensuite test avec le paramètre

    async:false

    [EDIT]
    Pardon j'ai pas lus juqu'à la fin ^^

    Es-ce que tu es en local par hasard ?

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 397
    Par défaut
    C'est en effet étrange que le async: false, ne solutionne pas le problème...

    Avez vous essayé en intégrant un timeout, pour vérifier si cela fonctionne? Cela pourrait-être une solution provisoire en attendant de trouver la raison du bug.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    Citation Envoyé par tidus_6_9_2 Voir le message
    Post déjà dans le forum JQuery ^^

    ensuite test avec le paramètre

    async:false

    [EDIT]
    Pardon j'ai pas lus juqu'à la fin ^^

    Es-ce que tu es en local par hasard ?
    Oui effectivement je travaille sous Wamp pour l'instant.
    Mais c'est bizarre parce que toute ma fonction est rempli de requête AJAX du même genre faisant exactement la même chose (récup des données d'un XML et les afficher dans un select), mais y'a que le bout de code que j'ai mis qui foire

    EDIT : j'ai essayé de mettre un timeout après mon each mais toujours pas

  5. #5
    Membre confirmé Avatar de tidus_6_9_2
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Par défaut
    Es ce que par hasard ton $.ajax se trouverais pas dans un autre $.ajax ?

    Car si le premier est asynchrone et que tu met le deuxième synchrone sa marche pas... soit les deux synchrones soit les deux asynchrones.

    Si c'est pas le cas, il est possible qu'en local, le XML ne passe pas... Il y a pas mal de soucis avec le XML... tu peux essayer d'envoyer un xml mais sous forme de texte et dans le type tu met xmlstring.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    Citation Envoyé par tidus_6_9_2 Voir le message
    Es ce que par hasard ton $.ajax se trouverais pas dans un autre $.ajax ?

    Car si le premier est asynchrone et que tu met le deuxième synchrone sa marche pas... soit les deux synchrones soit les deux asynchrones.

    Si c'est pas le cas, il est possible qu'en local, le XML ne passe pas... Il y a pas mal de soucis avec le XML... tu peux essayer d'envoyer un xml mais sous forme de texte et dans le type tu met xmlstring.
    Nop, j'ai pas de $.ajax dans d'autre $.ajax. Mais ma fonction est composé de plusieurs petite requête $.ajax qui font le même boulot. Ces autres requetes utilisent d'autres fichier XML, et ça passe très bien.

    De plus dans le code que je vous est fourni, mon tableau switch_cr se rempli bien avec les bonnes valeurs qu'il à récupérer de mon XML.

    C'est juste l'affichage dans mon <select> qui est mystique Oo

  7. #7
    Membre confirmé Avatar de tidus_6_9_2
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Par défaut
    dans success:function(Data)......

    Tu reçois qqch ou pas ?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    Citation Envoyé par tidus_6_9_2 Voir le message
    dans success:function(Data)......

    Tu reçois qqch ou pas ?
    Oui je reçois bien toutes les données qu'il me faut.

  9. #9
    Membre confirmé Avatar de tidus_6_9_2
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Par défaut
    ok, donc en gros ton soucis c'est la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $(xml).find('switch').each(function() {
    				switch_cr.push($(this).children('nom').text());
    			});
     
    			for(var j=0; j<switch_cr.length; j++) {
    				if(switch_cr[j] != '') {
    					//alert('valeur '+j+' : ' + switch_cr[j]);
    					$('select[name=switch_cr]').append('<option value="'+switch_cr[j]+'">'+switch_cr[j]+'</option>');
    				}
    			}
    donc dans ta première ligne, quand tu utilise le each, tu vas automatiquement passer à la ligne suivante dans ton xml. Pourquoi ne pas faire ton traitement directement dedans ?

    Test aussi les valeurs dans ta boucle for pour voir si les valeurs sont correctes

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    Citation Envoyé par tidus_6_9_2 Voir le message
    ok, donc en gros ton soucis c'est la



    donc dans ta première ligne, quand tu utilise le each, tu vas automatiquement passer à la ligne suivante dans ton xml. Pourquoi ne pas faire ton traitement directement dedans ?

    Test aussi les valeurs dans ta boucle for pour voir si les valeurs sont correctes
    Parceque il y a possibilités qu'il y ai des doublons enfaite. Donc je les met dans un tableau, puis j'utilise une fonction qui me supprime les doublons du tableau (je les pas mise ici pour tester si ça venait de là le soucis).

    Et dans mon for, j'ai déjà testé les valeurs et elles sont bien correctes.

    J'vais devenir chauve à force de m'arracher les cheveux ... :'(

  11. #11
    Membre confirmé Avatar de tidus_6_9_2
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Par défaut
    Ok, essaie peut-être dans ce cas de mettre tes valeurs dans un innerHTML
    et t'insère le tout dans une div ?

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    Citation Envoyé par tidus_6_9_2 Voir le message
    Ok, essaie peut-être dans ce cas de mettre tes valeurs dans un innerHTML
    et t'insère le tout dans une div ?
    Tester. Mes valeurs s'affichent bien dans la div.

  13. #13
    Membre confirmé Avatar de tidus_6_9_2
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 200
    Par défaut
    Ok donc maintenant tu sais d'où vient le soucis ^^

    c'est au moment out tu définis ton <select> et que tu fais .append qu'il y a un soucis... Difficile de te dire lequel...

    Mais essaie de jeter un oeil à ton code, si tes précédents codes fonctionnaient pour remplir ton select je ne vois pas de raisons pour laquel sa fonctionnerais pas pour celui la...

    Au pire des cas tu peux rester avec la solution du innerHTML qui est un peu moins propre mais qui fonctionne ^^

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    Citation Envoyé par tidus_6_9_2 Voir le message
    Ok donc maintenant tu sais d'où vient le soucis ^^

    c'est au moment out tu définis ton <select> et que tu fais .append qu'il y a un soucis... Difficile de te dire lequel...

    Mais essaie de jeter un oeil à ton code, si tes précédents codes fonctionnaient pour remplir ton select je ne vois pas de raisons pour laquel sa fonctionnerais pas pour celui la...

    Au pire des cas tu peux rester avec la solution du innerHTML qui est un peu moins propre mais qui fonctionne ^^
    Ouai normalement ça devrais marcher c'est bizar ... ça marche partout sauf ici xD bon ba j'vais tenter une méthode un peu plus crade =S

    Mythologik comme problème n'empêche ...

  15. #15
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonjour

    Si j'ai bien compris, switch_cr existe en tant qu'array et en tant qu'attribut name du select.

    Je propose d'essayer avec la forme correcte : $("select[name='switch_cr']") ou de donner un id au select et de faire $("#monSelectID").

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. récupérer valeur "alert" pour utilisation dans un script php
    Par mauyebo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/08/2008, 18h22
  2. [langage]Besoin d'aide pour debogage d'un script
    Par deadgod dans le forum Langage
    Réponses: 32
    Dernier message: 27/06/2005, 01h18
  3. J'ai besoin de votre aide pour une requête
    Par ovdz dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/05/2005, 12h42
  4. Besoin d'un conseil pour une sélection Access/fichier
    Par Oluha dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/03/2005, 20h10

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