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] script ajax qui fonctionne pas tout le temps


Sujet :

JavaScript

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2003
    Messages
    533
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Novembre 2003
    Messages : 533
    Points : 180
    Points
    180
    Par défaut [AJAX] script ajax qui fonctionne pas tout le temps
    Bonjour,

    J'ai sur mon site un affichage de miniature aléatoire. Il fonctionne assez bien sauf que il n'affiche pas tout le temps la miniature, de temps en temps, il n'affiche rien, comme si le code n'était pas exécuter jusqu'a la fin.

    Regarder sur www.services-web.ch

    Voici mon code :

    page index.php
    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
     
    //dans le head
    function lecture_miniature(){
    	var xhr = getXhr()
    	// On défini ce qu'on va faire quand on aura la réponse
    	xhr.onreadystatechange = function(){
    	  if(xhr.readyState == 3) {
    		document.getElementById('miniature').innerHTML = "Chargement en cours";
    	  }	
    	  else if(xhr.readyState == 4 && xhr.status == 200)
    	  {
    		//affiche le menu javascript
    		document.getElementById('miniature').innerHTML = xhr.responseText;
    	  }
    	}
    	xhr.open("GET","./pages/lecture_miniature.php");
    	xhr.send(null);
    }
    /**
    * Fonction utilisée pour la lecture de l'album
    */
    lecture_miniature();
    .
    .
    .
     
    <div id="miniature">
     
    </div>
    mais ce problème je le rencontre seulement en on-line, car en local chez moi, il n'y a pas de problème.

    Est-ce que quelqu'un aurait une idée?

    Merci d'avance pour votre aide

  2. #2
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    Bonjour,

    Sur Firefox il me fait une erreur JS:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    document.getElementById("miniature") has no properties
    http://www.services-web.ch/index.php?p=telechargement
    Line 125

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2003
    Messages
    533
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Novembre 2003
    Messages : 533
    Points : 180
    Points
    180
    Par défaut
    Bonjour,

    Merci pour l'info car je n'avais pas vu l'erreur, d'après ce que je comprends c'est qu'il ne trouve pas le div miniature, mais pourtant il y est! Est-ce possible que parfois il ne le trouve pas car le code s'effectue plus rapidement que les autres fois, donc le navigateur n'est pas arrivé à la partie du div miniature???

    J'espère que c'est clair ce que j'ai essayé de dire...

  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
    Bonjour,
    au lieu de recréer à chaque fois ton tag <img> via le innerHTML du <div>, il serait préférable de laisser le tag <img> "en dur", et de ne modifier que sa propriété src avec le retour d'Ajax ...

    A+
    Pour tout savoir sur l'utilisation du forum

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

  5. #5
    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
    ... de plus, au lieu de lancer ton script comme tu le fais, lance-le sur le onload du body, afin d'être sûr que ta page soit entièrement chargée quand il s'exécute (c'est dû à ça, l'erreur JS).

    Et enfin : pourquoi utiliser Ajax : tu ne mets à jour ta miniature qu'au chargement de la page. Ajax ne se justifie pas ...
    Tu prévois un timer ?

    A+
    Pour tout savoir sur l'utilisation du forum

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

  6. #6
    Membre habitué
    Inscrit en
    Novembre 2003
    Messages
    533
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Novembre 2003
    Messages : 533
    Points : 180
    Points
    180
    Par défaut
    Merci pour toutes ces infos, oui je prévois au rechargement de l'image chaque 5 secondes ou quelque chose comme ça.

    C'est vrai j'ai plus penser de le mettre au OnLoad du Body, je vais essayer et je vous redis tout ça!

  7. #7
    Membre habitué
    Inscrit en
    Novembre 2003
    Messages
    533
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Novembre 2003
    Messages : 533
    Points : 180
    Points
    180
    Par défaut
    Alors dans le body, ça fonctionne parfaitement, maintenant si j'ai envie qu'il change d'image chaque 5 secondes, je fais comment? Car j'ai essayer de mette un setintervall(fonction,5000), mais ça ne fonctionne pas, il ne me fait pas d'erreur mais ne s'exécute pas.

    J'ai aussi essayé de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetInterval(lecture_miniature(),5000);
    dans le OnLoad du body, mais il me fait une erreur.

  8. #8
    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
    Pb de syntaxe : suffit d'ajouter les " "

    A+
    Pour tout savoir sur l'utilisation du forum

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

  9. #9
    Membre habitué
    Inscrit en
    Novembre 2003
    Messages
    533
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Novembre 2003
    Messages : 533
    Points : 180
    Points
    180
    Par défaut
    C'est parfait, merci infiniment de ton aide.

    Tout est ok

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

Discussions similaires

  1. Fonction Reset qui ne fonctionne pas tout le temps
    Par darkterreur dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 02/03/2012, 09h11
  2. Réponses: 6
    Dernier message: 21/12/2010, 20h00
  3. Réponses: 2
    Dernier message: 16/03/2010, 09h49
  4. _POST qui ne fonctionne pas tout le temps
    Par johnson95 dans le forum Langage
    Réponses: 8
    Dernier message: 24/04/2008, 09h45

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