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 :

Fonction Ajax qui recoit plusieur retour php


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Par défaut Fonction Ajax qui recoit plusieur retour php
    Bonjour à tous ,
    j'ai une fonction Ajax qui s'execute parfaitement à l'appel et coté php tout se passe bien
    sauf que coté php j ai plusieurs echo qui devraient normalement etre prix en compte par ma fonction AJAX pour me permettre de mettre a jour mon animation

    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
     
     var url ='../ss/envoyer.php';
                        var formData = new FormData();
     
                        formData.append('id', sender_id);
                        formData.append('destinataire', destinataire);
                        formData.append('message', message);
                        formData.append('nombre', nombre_message);
     
                        window.fetch(url, {
                            method: 'POST',
                            body: formData,
                            headers:{
                                        //'Content-Type': 'text/plain',
                                        'X-Requested-With': 'XMLHttpRequest'
                            }                        
                        })
                        .then(function(response)) {
                                if (!response.ok) {
                                  throw new Error('failed to fetch')
                                }                         
                                return response.text();
                              })                    
                        .then(function(data)) 
                                {
                                nombre_retour=nombre_retour+1;
                                waitingDialog.message('Envoi...'+nombre_retour+' sur '+tab_length);                                         
                                //if(nombre_retour+1>=tab_length) setTimeout(location.reload.bind(location, true), 1000); 
                                //console.log('Success:',(data));
                                }                           
                            )
                        .catch(error => console.error('Error:', error));
    les valeur de retour sont les suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    12431873035
    7703684413228
    12431611846
    677757410509229
    1243161184677
    Merci !

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 101
    Par défaut
    Bonjour,
    je vois que tu as une ligne console.log('Success:',(data)); qui est mise en commentaires. L’as-tu essayée ? Qu’est-ce qui s’est affiché ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre éclairé Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Par défaut
    Bonjour Watilin ,
    j'ai un peu avancé et je pense que le soucis vient de php .

    console.log('Success:',(data))
    renvoie effectivement les données mais pas une par une comme je le souhaite , php fais tout le traitement et renvoie un seul echo .

    j'ai essayé le fonction flush mais sans succes .

    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
     
     if (ob_get_level() == 0) ob_start();
     
        ini_set('output_buffering','off');
        ini_set('zlib.output_compression', 0);
     
        set_time_limit(0);
     
     
        foreach ($destinatairesArray as $destinataire) {
     
            if(solde($login_utilisateur)<=0) { exit; };     // recherche du solde de cet utilisateur    
     
            $compteur++;       
     
            $operateur_dest=route($destinataire,$s_id,$message);
     
            $id='1'.$login_utilisateur.$destinataire.rand(1,900000);
     
     
            echo ($id);
     
            ob_flush();
            flush();            
        }
     
        ob_end_flush();
    on doit reussir a faire envoyer les echo , un par un a PHP et non envoyé un bloc .
    Merci

  4. #4
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 101
    Par défaut
    As-tu envisagé de spliter la chaîne sur les sauts de ligne "\n" ?

    Sinon il faudrait, au choix, faire plusieurs requêtes ajax en séquence, ou mettre en place des server-sent events. Ces deux solutions sont plus complexes.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Membre éclairé Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Par défaut
    Merci Watilin ,
    si je split sa ne m'interesse pas beaucoup car le vais juste mettre mes données dans un tabeau , ensuite si je fais plusieurs requette Ajax je retombe sur le probleme que j'ai actuellement car s'il faut faire moin de 1 000 requette pas de soucis et dans le cas ou il faudra faire 10 000, bonjour les soucis de ressource .
    la fonction flush de php devait facilement nous resoudre ce probleme .

  6. #6
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 101
    Par défaut
    flush ou pas, PHP répond à une requête ajax. Si tu veux que les données arrivent petit à petit, tu dois faire en sorte que la connexion reste ouverte, et ça se met à ressembler à la technologie server-sent events. Ou du long polling ou autre technique du genre Comet qui étaient utilisées avant que les server-sent events existent. À toi de voir.

    Avec le tableau renvoyé par split, rien ne t’empêche de traiter chaque ligne séparément. Mais je vois un location.reload dans ton code commenté, du coup je ne comprends pas bien ce que tu cherches à faire, au final.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. Echec de cofiguration windows update en boucle
    Par jncoffy dans le forum Windows 8
    Réponses: 1
    Dernier message: 09/10/2014, 15h54
  2. Windows boucle sur le fenêtre d'ouverture de session
    Par kitiss dans le forum Windows XP
    Réponses: 6
    Dernier message: 23/04/2007, 17h50
  3. [Outlook 2003] Windows installer en boucle
    Par Myogtha dans le forum Outlook
    Réponses: 1
    Dernier message: 19/03/2007, 09h13
  4. Boucles et FETCH
    Par benoithenry dans le forum Oracle
    Réponses: 5
    Dernier message: 16/05/2006, 09h36
  5. [C++] [API WINDOWS] Vider la boucle de messages !
    Par chronos dans le forum Windows
    Réponses: 1
    Dernier message: 04/08/2005, 15h53

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