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] Ajax et IE


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de Badaboumpanpan
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Points : 80
    Points
    80
    Par défaut [AJAX] Ajax et IE
    Bonsoir,

    Je débute avec Ajax et voilà mon problème :
    J'ai créé ma page avec un select qui se construit avec une sélection précédente.

    J'ai créé un code javascript qui fait appel à un fichier php pour procéder à une requête SQL pour remplir ce select.

    Extrait HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <table id="tab">
    <tr>
    <td>
    <select id="choix" onchange="choix(document.getElementById('choix').value)">
      <option>Choix 1</option>
      <option>Choix 2</option>
    </select>
     
    <select name="test">
    </select>
    </td>
    </tr>
    </table>
    En gros mon javascript :
    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
    function choix(choix) {
    	// Script AJAX
    	var xhr = null;
    	if(window.XMLHttpRequest) // Firefox et autres
    		xhr = new XMLHttpRequest(); 
    	else if(window.ActiveXObject){ // Internet Explorer 
    	   try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch (e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			};
    	}
    	else { // XMLHttpRequest non supporté par le navigateur 
    		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    		xhr = false; 
    	};
    	//on définit l'appel de la fonction au retour serveur
    	xhr.onreadystatechange = function() { ajax(xhr); };
     
    	//on appelle le fichier
    	xhr.open("GET", "ajax.php?choix="+choix, true);
    	xhr.send(null);
    }
     
    function ajax(xhr) {
    	if (xhr.readyState == 4) {
    		document.getElementById('tab').elements['test'].innerHTML = xhr.responseText;
    	};
    }
    Et mon fichier php retourne la chose suivante (après la requête SQL qui va bien avec un WHERE prenant 'choix' en paramètre et le while ($row) qui va bien aussi) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<option>$row[intitulé]</option>";
    Alors ca fonctionne impec sous FF, sous IE7 à la première ouverture de la page le readyState passe bien à 4 mais il n'affiche rien dans le select...
    Quelqu'un a-t-il une piste ?

    D'avance merci !!!!

    PS : j'ai essayé en commentant var xhr = null; et xhr = false; mais ça n'a rien changé...

  2. #2
    Membre régulier Avatar de Badaboumpanpan
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Points : 80
    Points
    80
    Par défaut
    Après plusieurs tests, on dirait que c'est le '?choix="+choix' qui ne passe pas avec IE7 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.open("GET", "ajax.php?choix="+choix, true);
    Autre truc, si je remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('tab').elements['test'].innerHTML = xhr.responseText;
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('tab').elements['test'].options[0] = new Option(xhr.responseText);
    Ca passe sous IE7 et FF, mais le problème c'est que du coup on a tout dans une seule option...

  3. #3
    Membre régulier Avatar de Badaboumpanpan
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Points : 80
    Points
    80
    Par défaut
    EU-RE-KA !!! J'ai trouvé !!!

    Bon, alors pour la passation de variable, c'est résolu, j'ai rajouté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option VALUE="Choix 1">Choix 1</option>
    Ensuite, après avoir bien galéré, penser passer par un fichier texte, etc.

    J'ai concocté ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "$row[intitulé]/";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function ajax(xhr) {
    	if (xhr.readyState == 4) {
    		var chaine = xhr.responseText;
    		var reg = new RegExp("/", "g");
    		var tableau = chaine.split(reg);
    		for (var i=0; i<tableau.length; i++) {
    			document.getElementById('tab').elements['test'].options[document.getElementById('tab').elements['test'].length] = new Option(tableau[i]);
    		};
    	};
    }
    Et ça marche !!!

    Bon, reste plus qu'un détail pour intégrer les &eacute; et autre accents...
    J'ai bien mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript" charset="iso-8859-1" src="script.js"></script>
    pourtant...

  4. #4
    Membre régulier Avatar de Badaboumpanpan
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Points : 80
    Points
    80
    Par défaut
    La conclusion que je tire de cette enseignement... comme d'habitude, il faut se compliquer la vie pour que ça soit opérationnel sous IE... Mais bon, l'essentiel c'est que ça fonctionne !!!!

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

Discussions similaires

  1. [AJAX] Ajax, formulaire, div et select
    Par n8ken dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/09/2006, 10h51
  2. [AJAX] Ajax ne réactualise pas le javascript ?
    Par shadowbob dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/01/2006, 08h26
  3. [AJAX] Ajax et les accents
    Par nico-pyright(c) dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 09/12/2005, 20h09
  4. [AJAX] Ajax et javascript contenu
    Par zekey dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/09/2005, 20h16
  5. [AJAX] AJAX et javascript
    Par spud5351 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/09/2005, 10h16

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