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] Compatibilité IE / AJAX


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    691
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 691
    Par défaut [AJAX] Compatibilité IE / AJAX
    Bonjour,

    Ce qui suit fonctionne parfaitement sous FF mais à moitié sur IE, je m'explique.

    J'ai un tableau et en dessous un formulaire d'ajout. J'ai la possibilité grâce à ce formulaire d'ajouter des informations dans mon tableau (ça crée une ligne à chaque fois et ça "rafraichit" en ajax le tableau), et pour chaque ajout j'ai la possibilité ensuite de supprimer ligne par ligne. Rien de bien compliqué jusque là.

    Sur FF, aucun problème, l'ajout et la suppression en AJAX marche, par contre sur IE, petit problème.

    Lorsque je valide l'ajout, aucune réaction d'IE, mais pourtant l'insertion en bdd a bien été faite puisque si je fais F5, elle apparait. Par contre, pour la suppression, aucune problème puisqu'elle se fait directement, et là, j'avoue ne pas comprendre pourquoi ça ne "refresh" pas après l'ajout mais pour la suppression oui ??

    Code de l'ajout en AJAX :

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    function ajouter(formu)
    {
    	XmlHttp = getXmlHttpObject();
     
    	var edit = formu.edit.value;
    	var type_moyen = formu.type_moyen.value;
    	if (formu.date.value==""){
    	var date = "Non renséigné";
    	}
    	else
    	{
    	var date = formu.date.value;
    	}
    	var etat = formu.etat_avancement.value;
    	var intitule = formu.intitule.value;
    	var jour_homme = formu.jour_homme.value;
    	var cout = formu.cout.value;
    	//etc...
    	XmlHttp.onreadystatechange=stateChanged;
    	XmlHttp.open("GET","actualiser.php?edit="+edit+"&type_moyen="+type_moyen+"&date="+date+"&etat="+etat+"&intitule="+intitule+"&jour_homme="+jour_homme+"&cout="+cout);	
    	XmlHttp.send(null);
    }
     
    function stateChanged()
    {
    	if(XmlHttp.readyState==4)
    	{
    		var reg = new RegExp("[;]+", "g");
     
    		var resultat = XmlHttp.responseText.split(reg);
     
    		var edit = resultat[0];
    		var type_moyen = resultat[1];
    		var date = resultat[2];
    		var etat = resultat[3];
    		var intitule = resultat[4];
    		var jour_homme = resultat[5];
    		var cout = resultat[6];
     
    		var tr = document.createElement('tr');	
    		tr.setAttribute('class', 'donneetableauut');
    		var td0 = document.createElement('td');
    		var td1 = document.createElement('td');
    		td1.setAttribute('align', 'center');
    		var td2 = document.createElement('td');
    		td2.setAttribute('align', 'center');
    		var td3 = document.createElement('td');
    		td3.setAttribute('align', 'center');
    		var td4 = document.createElement('td');
    		td4.setAttribute('align', 'center');
    		var td5 = document.createElement('td');
    		td5.setAttribute('align', 'center');
    		var td6 = document.createElement('td');
    		td6.setAttribute('align', 'center');
     
    		td1.appendChild(document.createTextNode(type_moyen));
    		td2.appendChild(document.createTextNode(date));
    		td3.appendChild(document.createTextNode(etat));
    		td4.appendChild(document.createTextNode(intitule));
    		td5.appendChild(document.createTextNode(jour_homme));
    		td6.appendChild(document.createTextNode(cout));
     
    		tr.appendChild(td0);
    		tr.appendChild(td1);
    		tr.appendChild(td2);
    		tr.appendChild(td3);
    		tr.appendChild(td4);
    		tr.appendChild(td5);
    		tr.appendChild(td6);
     
    		document.getElementById("divAjout").appendChild(tr);
    	}
    }
    Code de la suppression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     function supprMoyen(r,id)
    {
    	XmlHttp = getXmlHttpObject();
    	var i=r.parentNode.parentNode.rowIndex;
    	document.getElementById('divAjout').deleteRow(i);
    	XmlHttp.open("GET","suppr_moyen.php?id="+id);	
    	XmlHttp.send(null);
    }

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 14
    Par défaut
    Bonjour,

    Dans les options de IE, as tu choisi de toujours vérifier la version de la page (pas de mise en cache). J'ai déjà eu un problème similaire à cause de ça.
    Images attachées Images attachées  

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    691
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 691
    Par défaut
    Ça change rien, et en plus de ça ça me fait buguer d'autres pages :s

  4. #4
    Expert éminent

    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
    Par défaut
    Bonjour,
    certainement un problème de cache quand même.
    Voir http://www.developpez.net/forums/d33...nsertion-base/

    A+

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    691
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 691
    Par défaut
    Dans mon cas je dois le mettre en haut d'actualiser.php c'est ça ?

    Parce que si c'est le cas, j'avais déjà cherché et étais tombé plusieurs fois sur cette solution, sans succès. Ça marche toujours pas.

  6. #6
    Expert éminent

    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
    Par défaut
    Citation Envoyé par Herman Voir le message
    Dans mon cas je dois le mettre en haut d'actualiser.php c'est ça ?
    Si c'est elle qui génère la réponse : oui.
    Ces lignes doivent être les toutes premières de la réponse.

    Une autre solution (ci-dessus la ceinture, ci-dessous les bretelles) :
    http://javascript.developpez.com/faq...#navig.nocache

    A+

  7. #7
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    691
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 691
    Par défaut
    Toujours rien : x

  8. #8
    Expert éminent

    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
    Par défaut
    Citation Envoyé par Herman Voir le message
    Toujours rien : x
    Ca fonctionne pour tout le monde

    Tu devrais chercher ailleurs la cause de ton problème ...

    A+

  9. #9
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    691
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 691
    Par défaut
    Oui mais si ça marchait pas avec Firefox, j'aurais même pas posté ici, je me serais dit que ça vient de mon code.

    Mais là puisque ça marche parfaitement sous FF, je me dit que mon code doit pas être si mauvais que ça : o

  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    En même temps, si un code pouvait être toujours compatible IE/FF, il y aurait beaucoup moins de monde sur ce forum...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  11. #11
    Expert éminent

    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
    Par défaut
    Citation Envoyé par Herman Voir le message
    Oui mais si ça marchait pas avec Firefox, j'aurais même pas posté ici, je me serais dit que ça vient de mon code.

    Mais là puisque ça marche parfaitement sous FF, je me dit que mon code doit pas être si mauvais que ça : o

    Disons d'abord que ce n'est pas parce qu'un code ne fonctionne pas sous IE qu'il est mauvais

    Ensuite, le nombre de différences entre IE et FF est suffisant pour obliger à prévoir 2 comportements différents.

    Bref, ton code peut être correct (il marche pour FF), mais pas adapté aux "spécificités" () d'IE.

    Par exemple, IE confond allègrement name et id.
    Or l'un se doit d'être unique et l'autre nom, ce qui fait qu'un code correcte peut, dans certains cas, planter IE.

    Aussi, avec le code donné (JS uniquement) pas possible d'analyser plus ...
    Au cas où, IE n'aime pas setAttribute(). Essaye plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var tr = document.createElement('tr');	
    tr.className = 'donneetableauut';
    var td0 = document.createElement('td');
    var td1 = document.createElement('td');
    td1.style.textAlign = 'center';
    var td2 = document.createElement('td');
    ...
    A+

  12. #12
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    691
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 691
    Par défaut
    Idem, ça marche sous FF, pas sur IE. J'ai ça côté PHP sinon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    header("Pragma: no-cache");
    header("Expires: 0");
    header("Cache-Control: no-cache, ");
    require('connec.php');
            $date = $_GET['date'];
            $date = explode('/',$date);
            $date =  $date[2] . '-' . $date[1] . '-' .$date[0]; 
    mysql_query("INSERT INTO moyen VALUES('', '" . $_GET['edit']. "', '". $_GET['type_moyen'] ."', '". $date ."', '". $_GET['etat'] ."', '". $_GET['intitule'] ."', '". $_GET['jour_homme'] ."', '". $_GET['cout'] ."')");
    echo $_GET['edit'].';'.$_GET['type_moyen'].';'.$_GET['date'].';'.$_GET['etat'].';'.$_GET['intitule'].';'.$_GET['jour_homme'].';'.$_GET['cout'];
    ?>

  13. #13
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Tu as essayé de faire un alert du tableau resultat ?
    Essaye peut-être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var resultat = XmlHttp.responseText.split(';');
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  14. #14
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    691
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 691
    Par défaut
    Toujours pas Ça marche sous FF, pas sous IE.

    (le alert je le case où parce que je l'ai placé à différent endroit et ça m'alert quedale ^^)

  15. #15
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function stateChanged()
    {
    	if(XmlHttp.readyState==4)
    	{
    		var reg = new RegExp("[;]+", "g");
     
    		var resultat = XmlHttp.responseText.split(reg);
    		alert(resultat);
    		var edit = resultat[0];
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  16. #16
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    691
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 691
    Par défaut
    Ah ben je l'avais bien mis au bon endroit, et ça me fait aucun alert ni sur FF ni sur IE.

  17. #17
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    C'est surprenant ça !
    Et dans la console de firebug, il te mets quoi dans l'onglet response ?
    Sinon, ta page est en ligne ?

    EDIT:
    Tu as pensé à CTRL+F5 ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  18. #18
    Expert éminent

    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
    Par défaut
    Essaye déjà un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	if(XmlHttp.readyState==4)
    {
    alert(XmlHttp.responseText);
    var reg = new RegExp("[;]+", "g");
    ...
    Pour vérifier le format de réception ...

    A+

  19. #19
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    691
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 691
    Par défaut
    Idem, le alert semble ne pas fonctionner, toujours rien : o

    Ce code est dans un function.js auquel je fais appel depuis ma page php de départ, y'a rien d'anormal là dedans au moins ?


    Sinon :

    Non la page n'est pas en ligne.

    Oui je fais toujours CTRL F5 quand je fais ce genre de modif.

    Et je peux pas installer firebug sur le poste où je suis

  20. #20
    Expert éminent

    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
    Par défaut
    Il doit y avoir une erreur JS avant qui bloque ton code ...
    La notification d'erreur de script est activée ?

    XmlHttp est bien déclaré en global ?

    A+

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AJAX] Compatibilité navigateurs
    Par charlottebardet dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 29/04/2008, 09h48
  2. [AJAX] Compatibilité firefox / IE6
    Par bioinfo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/03/2008, 13h44
  3. [AJAX] compatibilité avec les tables
    Par zooffy dans le forum ASP.NET
    Réponses: 7
    Dernier message: 19/12/2007, 11h15
  4. [AJAX] Compatibilité IE / FF pour ajax ?
    Par crepeOsucre dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 23/06/2007, 17h00
  5. [AJAX] compatibilité restreinte
    Par cyrill.gremaud dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 17/11/2006, 10h21

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