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

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [AJAX] Plusieurs appels Ajax pour un traitement, FireFox affiche les résultats intermédiaires mais pas IE8 !
    Bonjour à tous,

    Sur l'un de nos sites de vente en ligne, la création d'une commande prend plusieurs étapes. Nous informons le client chaque fois qu'une étape est terminée pour le faire matienter. Chaque étape fait l'objet d'un appel Ajax, d'un traitement PHP et d'une notification graphique gérée en JavaScript.

    Firefox affiche parfaitement le résultat souhaité, on voit bien la progression de la construction de la commande. Mais Internet Explorer 8 attend la fin de la construction de la commande avant de mettre à jour le contenu de la page. Ainsi, les utilisateurs d'Internet Explorer ne peuvent pas voir les étapes se dérouler sous leur yeux.

    Ce probléme est donc plus général, on dirait que Firefox affiche les modifications JavaScript au fur et à mesure de l'exécution alors qu'Internet Explorer attend la fin des scripts pour afficher le résultat final sans les résultats intermédiaires.


    Au cours de mes tests, j'ai remarqué que si je place un JavaScript Alert, Internet Explorer affiche bien l'état actuel de la commande. Mais il est impossible d'afficher un Alert à chaque étape car ça n'a pas de sens en terme d'ergonomie.

    Au niveau PHP, j'ai testé les fonctions Flush, mais le probléme se trouve en fait au niveau d'Internet Explorer... comment le forcer à afficher en temps réeel les commandes JavaScript plutot que d'afficher le résultat final sans attendre la fin du script ?

    Je cherche depuis des lustres sans trouver de solution, c'est pour cela que je fais appel à la communauté... merci par avance pour votre aide.

  2. #2
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Essaye en exploitant le responseText lorsque le readyState est à 3, ce qui permet d'avoir accès aux données au fur et à mesure qu'elles arrivent.
    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

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Ca ne viendrait pas de readyState
    Normalement, on utilise readyState à 4 pour interpréter le ratour Ajax. Cela signifie que l'on attend la fin du traitement Ajax. En passant cette valeur 3, on essaye d'interpréter le retour avant avoir recut toute la réponse du serveur. Aprés avoir testé cette piste, j'ai constaté de nombreux bug ( puisque le site est pensé pour fonctionner en Synchrone ) sans pour autant corriger le probléme.

    Je n'ai pas besoin de faire des pauses durant un appel Ajax, mais j'aimerais qu'entre chaque appel, Internet Explorer affiche l'état des calculs comme le fait Firefox.

    Voici une URL pour illustrer mon propos de manière simple :
    http://dev.profolio.fr/espace/index....rtage_id=84668

    Sélectionnez les deux premières rangées de photos : Déjà, on constate une latence sous IE8 qui n'existe pas avec FireFox.

    Passez à l'étape suivante, avec :: Controler mon panier :: et sélectionnez le premier produit :: Photographie 20x30 ::. Une liste sur fond grisé permet d'associer une quantité à chacune des photos en une seule manipulation.

    Avec Firefox, on voit bien le détail des calculs s'afficher. Internet Explorer lui se fige et attend la fin des calculs pour afficher le résultat final. C'est l'illustration parfaite du probléme, sans aller dans la complexité de la création de la commande.

    Je n'attends pas une réponse toute faite de la part de la communauté, mais des pistes de réflexion ou un retour d'expérience similaire car pour la première fois depuis des années, je suis bloqué. Merci à tous pour votre temps.

Discussions similaires

  1. Plusieurs appels ajax en parallèle
    Par Ceubex dans le forum jQuery
    Réponses: 1
    Dernier message: 18/12/2013, 16h03
  2. Appel Ajax avec jQuery : $.ajax is not a function
    Par Grulf dans le forum jQuery
    Réponses: 2
    Dernier message: 18/02/2011, 11h47
  3. [AJAX] deux appels ajax qui refusent de cohabiter
    Par chelguera dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/11/2007, 15h47
  4. [SQL] Afficher les résultats d'une requête sur plusieurs pages
    Par mealtone dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/09/2006, 13h20
  5. [AJAX] Effectuer plusieur appel ajax
    Par shwin dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/10/2005, 16h40

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