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] IE ne charge pas mon formulaire


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant technico-fonctionnel SAP BPC
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant technico-fonctionnel SAP BPC
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 42
    Points
    42
    Par défaut [AJAX] IE ne charge pas mon formulaire
    Bonjour,

    Je bosse sur un site e-commerce.
    Tu cliques sur un produit, les infos du produit se charge dans un div.
    Dans ces infos se trouve un select (taille) lui même chargé par une fonction javascript.
    Que la liste soit vide ou non :
    Sous Firefox pas de problème, la liste apparait normalement.
    Sous Internet Explorer, la liste apparait 1/4 de seconde et puis plus rien.

    Je ne comprends pas.

    Le bouton qui charge le div :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    <a style="cursor: Pointer" onclick="javascript:produit('<?php echo $cat;?>','<?php echo $sscat;?>','<?php echo $val['ref'];?>'); taille2('<?php echo $val['ref'];?>','<?php echo $val['couleur'];?>');"><img width="80" height="110" src="http://www.colorcuir.com/graph/catalogue/femme/mini/<?php echo $val['ref'];?>a.png"></a><br />
    ?>
    La fonction taille2 :
    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
     
    function taille2(ref,couleur){
     
    				var taille = CreateXMLHttpRequest ();
    				var method = 'GET';
    				var filename = 'inc/taille.php?ref='+ref+'&couleur='+couleur+'&taille=';
    				taille.open(method, filename, true);
    				taille.onreadystatechange = function(){
     
    					if(taille.readyState == 4)
    					{
    						var tmp = taille.responseText;
    						document.getElementById('taille').innerHTML = tmp;
    					}
    				}
    				taille.send(null);				
    			}
    la page taille.php appelée par la fonction :
    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
     
    <?php
                                                                                    require_once ('xxxxx.php');
                                                                                    
                                                                                    //récupération des GET
                                                                                            $ref = mysql_real_escape_string($_GET['ref']);
                                                                                            $couleur = mysql_real_escape_string($_GET['couleur']);
                                                                                    ?>
    									<input type="hidden" name="reference" id="reference" value="<?php echo htmlentities($ref);?>" />
    									<input type="hidden" name="couleur" id="couleur" value="<?php echo htmlentities($couleur);?>"	/>
    									<select id="selecttaille" name="selecttaille" onchange='taille(this.value);'>
    										<?php
                                                                                    
                                                                                    if (isset($_GET['taille']))
                                                                                    {
                                                                                                    $taille = intval($_GET['taille']); 
                                                                                                    
                                                                                                    //affichage des taille  
                                                                                                            $reqtaille = mysql_query("SELECT * FROM stock WHERE ref='".$ref."' AND couleur='".$couleur."' ORDER BY taille ASC") or die ("pb select taille");
                                                                                                            while($donneestaille = mysql_fetch_array($reqtaille))
                                                                                                            {
                                                                                                                    if($donneestaille['quantite'] != 0)
                                                                                                                    {
                                                                                                                            
                                                                                                                            if($donneestaille['taille'] == $taille)
                                                                                                                            {
                                                                                                                                    ?>
    																<option value="<?php echo $donneestaille['taille']; ?>" selected="selected"><?php echo $donneestaille['taille']; ?></option>
    																<?php
                                                                                                                            }
                                                                                                                            if($donneestaille['taille'] != $taille)
                                                                                                                            {
                                                                                                                            ?>
    																<option value="<?php echo $donneestaille['taille']; ?>"><?php echo $donneestaille['taille']; ?></option>
    															<?php
                                                                                                                            }
                                                                                                                    }
                                                                                                            }
                                                                                    }
                                                                                    mysql_close();
                                                                                    ?>
    									</select>
    et enfin le div dans lequel est chargé la liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <td width="30" height="30"><form id="prod" name="prod"><span id="taille"></span></form></td>
    Je vous remercie d'avance pour votre aide.
    Habituellement j'arrive à trouver sans demander mais là...

    Edit : http://www.colorcuir.com
    catalogue => femmes => vestes courtes => première photo

    J'ai tout passé au Firebug et Debugger pour IE
    Pas d'erreur rencontrée.

  2. #2
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Ouais c'est bizarre, chez moi ca marche bien de temps en temps.

    Dans ton code php, tu retournes un select avec un event attaché (onchange=taille). Ca je ne suis pas sur que IE soit capable de très bien le gérer quand tu ajoutes ton select à la page via innerHTML.

    Ce que tu devrais faire, au lieu de créer ton sélect coté php et de le coller dans ta div quand tu récupères ta réponse ajax, c'est de renvoyer les infos qui vont te permettre de le recréer coté client, via le DOM.

  3. #3
    Membre du Club
    Homme Profil pro
    Consultant technico-fonctionnel SAP BPC
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant technico-fonctionnel SAP BPC
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 42
    Points
    42
    Par défaut IE + onchange
    Salut,

    Citation Envoyé par DoubleU Voir le message
    Ouais c'est bizarre, chez moi ca marche bien de temps en temps.

    Dans ton code php, tu retournes un select avec un event attaché (onchange=taille). Ca je ne suis pas sur que IE soit capable de très bien le gérer quand tu ajoutes ton select à la page via innerHTML.
    Lors de ma première version du site j'ai utilisé la fonction onchange, elle fonctionnait parfaitement sous IE. Mais c'est vrai la page "infos produit" était unique, elle ne passait pas par innerHTML.
    Ca ne fonctionne pas non plus sous IE7.

    Citation Envoyé par DoubleU Voir le message
    Ce que tu devrais faire, au lieu de créer ton sélect coté php et de le coller dans ta div quand tu récupères ta réponse ajax, c'est de renvoyer les infos qui vont te permettre de le recréer coté client, via le DOM.
    Tu veux dire, construire le select en javascript?

    IE est vraiment pénible, et dire que beaucoup de monde l'utilise.

    Merci de ta réponse

  4. #4
    Membre du Club
    Homme Profil pro
    Consultant technico-fonctionnel SAP BPC
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant technico-fonctionnel SAP BPC
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 42
    Points
    42
    Par défaut IE + requete
    Re,

    Je viens de faire un test en appelant un select simple.
    La premiere fois que le select est appelé pas de problème, il reste, mais la deuxième non.

    Si tu regarde bien ma fonction taille2, j'ai oublié d'ajouter une variable aléatoire pour éviter que deux requêtes identiques ne soient appelées.

    Je corrige çà et te tiens au courant.

  5. #5
    Membre du Club
    Homme Profil pro
    Consultant technico-fonctionnel SAP BPC
    Inscrit en
    Février 2009
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant technico-fonctionnel SAP BPC
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 40
    Points : 42
    Points
    42
    Par défaut IE + formulaires
    C'est bon !!!

    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
     
    function taille2(ref,couleur){
    				var count = Math.random();
    				var taille = CreateXMLHttpRequest ();
    				var method = 'GET';
    				var filename = 'inc/taille.php?ref='+ref+'&couleur='+couleur+'&count='+count+'&taille=';
    				taille.open(method, filename, true);
    				taille.onreadystatechange = function(){
     
    					if(taille.readyState == 4)
    					{
    						var tmp = taille.responseText;
    						document.getElementById('taille').innerHTML = tmp;
    					}
    				}
    				taille.send(null);				
    			}
    j'ai ajouté une "var count = Math.random(); " afin que chaque requête soit unique.

    QUAND MEME

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

Discussions similaires

  1. Mon store ne charge pas mon combobox
    Par solo190 dans le forum Ext JS / Sencha
    Réponses: 5
    Dernier message: 14/10/2014, 17h20
  2. mon php ne traite pas mon formulaire
    Par abdelkarim_1987 dans le forum Langage
    Réponses: 8
    Dernier message: 13/06/2013, 11h20
  3. Réponses: 9
    Dernier message: 07/07/2008, 15h53
  4. ie ne retrouve pas un element de mon formulaire
    Par duge dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/02/2006, 09h50
  5. Réponses: 2
    Dernier message: 21/04/2005, 17h09

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