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

jQuery Discussion :

Récupération de data durant appel $.ajax


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut Récupération de data durant appel $.ajax
    Bonjour.

    J'ai un léger soucis concernant la création d'une barre de progression pour l'avancement d'une tâche.

    J'ai un script JS qui appelle un script PHP grâce à un $.ajax.
    Ce script récupère des informations et les enregistre en base de données.
    Avant toute insertion, je peux connaitre le nombre d'éléments à traiter. Je peux donc facilement, au cours de la boucle, connaitre l'avancement de mon traitement global.

    Le problème est que je ne trouve pas de moyen de récupérer ces informations pour alimenter une JQuery ProgressBar.
    Je cherche donc un moyen de récupérer des data au cours de l'appel $.ajax, toutes les secondes par exemple, ou à chaque modification de la valeur d'avancement.

    Je suis pour l'instant bloqué par l'aspect client/serveur qui m’empêche de contourner le problème avec un fichier ou de la mémoire partagée.

    La doc de jQuery ne semble pas donner d'info sur une fonction/méthode lisant la sortie standard régulièrement durant l’exécution du script PHP.

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Il ne me semble pas que cela soit possible avec un seul ajax...
    Selon moi coté serveur tu devra modifier une donnée que tu devras recupérer au moyen d'un second ajax dans un setInterval.
    Pour moi ajax ne retourne qu'une réponse.
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut
    Merci à toi SpaceFrog, tu m'as mis sur la bonne voie.

    En effet, un appel Ajax = une réponse.

    Donc j'ai fait comme suit :
    - Je lance un timer toutes les secondes qui envoie une requete Ajax, qui elle lit un fichier et me renvoie son contenu (le %age).
    - Je lance mon Ajax d'enregistrement, qui écrit, à chaque itération de ma boucle, le pourcentage d'avancement dans un fichier.
    - Je nomme le fichier par le timestamp du moment de l'appel du script global. (Dans mon cas d'utilisation, possibilités de chevauchement de fichier quasi nulle).
    - A la fin du script Ajax d'enregistrement, je débranche le timer de récupération de %age.

    Le résultat est très concluant, merci de ton aide !

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Pour le nommage tu peux y inclure un sessionid ...
    Sinon pour le principe de base c'est exactement ça
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 37
    Par défaut
    En fait j'ai réussi a me débrouiller pour avoir un résultat très sympa. (Barre d'avancement très précise et rafraichie très souvent).

    Par contre j'avoue que le processus d'échange des données dans un fichier me satisfait pas vraiment.
    La session ne fonctionne pas, j'ai cherché du côté de la mémoire partagée, rien de génial, et faire une table en db juste pour ça, c'est pas vraiment foufou.

    Si vous connaissez des moyens de stocker des data durant des appels Ajax, je suis preneur.

    Merci du coup de main et A+ !

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    il me semble avoir déja vu un moyen de passer avec le seconde ajax un session id ce qui permettrait de recupérer le %age en session ...

    de mémoire poru que la page appelée par ajax reconnaisse que la session est la même:
    tu mets un session_start() sur la appelée par ajax
    ensuite il faut d'abord passer l'id de la session coté client

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var masession = "'.session_id().'";
    puis il faut réinjecter cet id de session avant le send() ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setRequestHeader( 'Set-Cookie' , 'PHPSESSID=' + masession );
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

Discussions similaires

  1. Récupération d'une valeur après l'appel Ajax
    Par freestyler1982 dans le forum jQuery
    Réponses: 3
    Dernier message: 05/06/2014, 15h22
  2. [AJAX] récupération data xml depuis AJAX
    Par jpclutier dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 07/05/2008, 14h13
  3. [Dojo] Simple data grid sans appel Ajax
    Par Den's dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 14/12/2006, 08h23
  4. [AJAX] appel Ajax DOM
    Par MALAGASY dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/09/2006, 13h16
  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