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 :

[AJAX] Click sur select alimenté par ajax plante ie


Sujet :

JavaScript

  1. #1
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut [AJAX] Click sur select alimenté par ajax plante ie
    Bonjour,

    J'utilise ajax depuis peu et j'ai un gros problème :
    - j'ai prévu que l'évènement onchange du select 1 mette à jour, via window.ActiveXObject, les options possibles du select 2.

    - tout marche très bien sauf que, parfois, lorsque je clique sur le select 2, ie se ferme sans préavis !

    Je n'y comprend rien. Au secours !

    Philippe

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par Pgs Voir le message
    Je n'y comprend rien.
    nous pas plus, sans ton code ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  3. #3
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    Bonjour,

    a) La fonction onchange du select 1 est : majmotifchoix(this)

    b) Cette fonction est définie comme suit :

    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
    function majmotifchoix(x)
    {
    var xhr_object = null;
    if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
    else if(window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    else
    {
    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    return;
    }
    xhr_object.open("POST", "maj.php", true);
    xhr_object.onreadystatechange = function() { if(xhr_object.readyState == 4) eval(xhr_object.responseText);}
    xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhr_object.send();
    }
    c) maj.php est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    echo 'var s=document.getElementById("motif");'; 
    echo 's.options.length=0;'; 
    $req="..."
    $dataset=mysql_db_query($base, $req, $conn);
    while ($enreg = mysql_fetch_array($dataset))
    {
    echo 's.options[s.options.length] = new Option("'.$enreg['description'].'", "'.$enreg['id'].'", false, false);'; 
    }
    }
    La fonction marche bien.

    C'est lorsque je fais un click sur le select "motif" que ça plante.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Et si tu enlèves
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    ??

    Sinon, le code HTML des objets concernés serait nécessaire.
    De plus, le code généré par maj.php serait préférable

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  5. #5
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    Si j'enlève
    xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    alors mon select n'est même plus mis à jour.

    Mon problème réside plus dans l'utilistaion du select après mise à jour que dans sa mise à jour elle même.

    Je n'ai pas voulu entrer trop dans le détail, mais en fait, la liste des options du select "motif" varie en fonction de la valeur du premier select.

    Et tout celà fonctionne bien. Le problème survient aléatoirement, lorsque le select motif a été mis à jour plusieurs fois (nombre variables) suite à différents changements de valeur dupremier select.

    Le problème ne suivient pas lors de la mise à jour, mais lorsque je clique sur le select après mise à jour.

    Mon problème n'est pas facile à décrire, je m'excuse par avance si mes explications ne sont pas claires.

    Philippe

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Le problème est peut être que tu forces la longueur du select à 0 alors que tu n'as pas effectivement supprimé les options :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo 'var s=document.getElementById("motif");'; 
    echo 's.options.length=0;';
    Il faudrait donc (peut-être) auparavant supprimer les options (removeChild)

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Je ne pourrais pas dire si c'est la cause, mais certains navigateurs perdent les pédales lorsque l'élément sur lequel il y a le "focus" disparait spontanément. Tu pourrais toujours tester en changeant le focus. Qui sais ?

  8. #8
    Pgs
    Pgs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 482
    Points : 100
    Points
    100
    Par défaut
    Merci à tous les deux pour vos réponses.

    Je vais essayer...

    Bonne journée

    Philippe

  9. #9
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2007
    Messages : 340
    Points : 350
    Points
    350
    Par défaut
    Bonjour,

    J'ai le même problème sous IE7. Apparemment ça n'intervient que sur les <select > ayant un seul "option" généré par l'ajax

    Pour ma part, je vide le select via la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function select_vider(select1)
    {
      while(select1.length>0)
        select1.options[select1.length-1] = null;
    }

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/02/2014, 00h23
  2. Réponses: 12
    Dernier message: 11/05/2009, 10h41
  3. Requête Ajax sur éléments d'un select remplis par Ajax
    Par descurai dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/04/2009, 17h04
  4. [AJAX] Comment rafraîchir une liste déroulante alimentée par ajax
    Par lodan dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/03/2007, 09h01
  5. [AJAX] Actualisation d'une page par AJAX
    Par jack_1981 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/06/2006, 13h07

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