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

AJAX Discussion :

Comportement variable selon les navigateurs


Sujet :

AJAX

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2004
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 264
    Points : 104
    Points
    104
    Par défaut Comportement variable selon les navigateurs
    Bonsoir,

    Tout d'abord je précise que je suis un néophyte en Ajax.

    Voici le problème en phase expérimentation :

    J'ai des pages web à partir desquelles je peux proposer le téléchargement de différents fichiers, pour chaque page, lors du clic, j'ai une procédure en php qui réécrit pour le fichier concerné la mise à jour du compteur dans un fichier .txt. Jusqu'à présent la valeur contenue dans le fichier .txt était lue uniquement lors du chargement de la page concernée avec :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <?include"telechargements/applications_tartampion.txt"?>

    Mais évidemment jamais mise à jour lors du téléchargement.
    Voulant rendre dynamique cette valeur, je me suis lancé avec Ajax.

    Dans la page, j'indique évidement l'emplacement du fichier ajax.js et j'initialise la valeur concernée lors du chargement avec une des fonctions du fichier ajax.js, ici gestionClop() :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <head>
        <script type="text/javascript" src="./index_fichiers/ajax.js"></script>
    </head>]
     
    <body class="structure_default" onload="gestionClop();return false;">

    Dans le page php lors du clic le compteur est incrémenté, le fichier est téléchargé et la valeur affichée doit être elle aussi incrémentée :

    Code html : 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
     
         <tbody>
         <tr>
            <td align="center" WIDTH="16%"><span style="font-size:3px;"><br>
    	    <a href=clic.php?url=applications/tartampion.zip <!--  Incrémentation du compteur concernant le fichier  tartampion.zip  -->
    	        onmouseup="gestionClop();return false;">      <!--  Récupération de la valeur du compteur dans le fichier applications_tartampion.txt  -->
            <img src="index_fichiers/download.gif" alt="download.gif" ></a>
            <br><br></span>	  
            </td>
            <td align="center">
            <table border="2" cellspacing="0" cellpadding="0"  border cellpadding="0" bordercolor="red" WIDTH="100%">
            <tbody>
            <tr>
            <td align="center"> 
    		<span style="font-size:6px;"><br></span>   		
                    <a style="text-decoration:none; font-size:13px; color:#00ff00;"   
    		href=clic.php?url=applications/tartampion.zip <!--  Incrémentation du compteur concernant le fichier  tartampion.zip  -->
    		onmouseup="gestionClop();return false;"   <!--  Récupération de la valeur du compteur dans le fichier applications_tartampion.txt  -->
                    onmouseover="this.style.color='#f7c80d';this.style.textDecoration='underline'" 
                    onmouseout="this.style.color='#00ff00';this.style.textDecoration='none'">         		 
                   <b>Cliquer ici pour d&eacute;marrer le t&eacute;l&eacute;chargement</b>
    	    </a> <span style="font-size:6px;"><br>&nbsp;</span>	
            </td>
    	    </tr>
    	    </tbody>

    L'affichage de la valeur étant réalisé avec :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    &nbsp;&nbsp;<b>Mise &agrave; jour</b> t&eacute;l&eacute;charg&eacute;e <span id="reponse"></span> fois <br><br>

    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    var http; // Notre objet XMLHttpRequest
     
    function createRequestObject() 
    {
    	var http = null;
    //     var http = 0;
    //	var http;
     
    	if (window.XMLHttpRequest || window.ActiveXObject) {// Mozilla, Safari, IE7 ...
    		if (window.ActiveXObject) {  // Internet Explorer 6
    			try {
    				http = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch(e) {
    				http = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    		} else {
    			http = new XMLHttpRequest(); 
    		}
    	} else {
    		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
    		return null;
    	}
    	return http;
    }
     
     
    function gestionClic()
    {
        http = createRequestObject();
        http.open('GET', './mon-script.txt', true);
        http.onreadystatechange = handleAJAXReturn1;
        http.send(null);
    }
     
     
    function gestionClicClac()
    {
        http = createRequestObject();
        http.open('GET', './mon-stock.txt', true);
        http.onreadystatechange = handleAJAXReturn2;
        http.send(null);
    }
     
     
    function gestionClop()
    {
        http = createRequestObject();
        http.open('GET', './telechargements/applications_NinaPerf.zip.txt', true);
        http.onreadystatechange = handleAJAXReturn3;
        http.send(null);
    }
     
    function handleAJAXReturn1()
    {
        if (http.readyState == 4)
        {
            if (http.status == 200)
            {	
                document.getElementById('resultat').innerHTML = http.responseText;
            }
            else
            {
                alert('Pas terrible tout cela avec gestionClic');
            }
        }
    }
     
    function handleAJAXReturn2()
    {
        if (http.readyState == 4)
        {
            if (http.status == 200)
            {	
    			document.getElementById('stock').innerHTML = http.responseText;	
            }
            else
            {
                alert('Pas terrible tout cela avec gestionClicClac');
            }
        }
    }
     
    function handleAJAXReturn3()
    {
        if (http.readyState == 4)
        {
            if (http.status == 200)
            {		
    			document.getElementById('reponse').innerHTML = http.responseText;
            }
            else
            {
                alert('Pas terrible tout cela avec gestionClop');
            }
        }
    }
    Or que se passe-t-il pour Opéra, Google Chrome, Firefox et IE 11 ?

    1. Au chargement initialisation correcte de la valeur du compteur.
    2. Lors du clic sur les liens de téléchargement :
      • pour Opéra et Google Chrome le téléchargement est correct, l'affichage du compteur est mis à jour et il n'y a pas de message d'erreur ;
      • pour IE 11 le téléchargement est correct, l'affichage du compteur est mis à jour parfois et parfois non mais il n'y a pas de message d'erreur ;
      • pour Firefox le téléchargement est correct, l'affichage du compteur n'est pas mis à jour et il y a un message d'erreur "Pas terrible tout cela avec gestionClop".


    Quelqu'un a-t-il une idée de ce qui peut provoquer une telle disparité de comportement ?
    Merci par avance.

  2. #2
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2004
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 264
    Points : 104
    Points
    104
    Par défaut
    Pas de réponse....
    Donc je garde cette méthode en supprimant le message d'alerte produit par Mozilla du fait que les procédures sont réalisées convenablement.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 95
    Points : 133
    Points
    133
    Par défaut
    Bonjour
    J'ai appris à me méfier comme de la peste des requêtes Ajax et de leur actualisation (le contraire habituel à la réponse 200 est un 304 : non modified) donc j'y glisse systématiquement un élément aléatoire (Date(), Math.random()) pour changer à chaque requête la trame de l'URL, histoire de tromper le navigateur... et les proxy qui peuvent intervenir dans le circuit. On trouve ce genre d'ajout implémenté dans les principaux framework javascript (Jquery.ajax : "cache:false")

  4. #4
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2004
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 264
    Points : 104
    Points
    104
    Par défaut
    Bonjour,

    Je suis preneur de la méthode car en effet j'ai constaté plus d'une fois qu'Ajax n'est pas toujours très réactif...

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122

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

Discussions similaires

  1. [JavaScript] [jquery]Trouver la valeur par defaut de propriétés css selon les navigateurs.
    Par SpaceFrog dans le forum Contribuez
    Réponses: 0
    Dernier message: 08/09/2010, 15h48
  2. Réponses: 7
    Dernier message: 15/02/2010, 21h52
  3. Réponses: 8
    Dernier message: 20/08/2008, 09h52
  4. Margin-left différent selon les navigateurs (IE et FF)
    Par snyfir dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 14/04/2008, 20h00
  5. [DOM]ordre des appels DOM et visualisation selon les navigateurs
    Par Herode dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 06/01/2007, 11h28

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