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 :

return d'une fonction [AJAX]


Sujet :

jQuery

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2008
    Messages : 231
    Points : 82
    Points
    82
    Par défaut return d'une fonction
    Bonjour à tous,

    Pour un site dev en php j'intègre petit à petit du jquery et je suis face à un problème. J'ai une fonction javascript qui en appelle une autre. La 2ème est le résultat d'une requête php qui me renvoie bien des données mais dans ma fonction principale je n'arrive pas à affiche le récupérer le résultat. Ca sera peut être plus clair avec le code :

    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
       publics.getOppors = function (bpcnum, bpaadd, tsccod, tsccod1, tsccod2, rep, datedeb, datefin) {
        $.ajax({
          url: privates.url,
          cache: false,
          type: "GET",
          dataType: "json",
          data: {
            a: 'getoppors',
            bpcnum: bpcnum,
            bpaadd: bpaadd,
            tsccod: tsccod,
            tsccod1: tsccod1,
            tsccod2: tsccod2,
            rep: rep,
            datedeb: datedeb,
            datefin: datefin,
            j:1
          },
          success: function(data) {
            $.each(data, function (key, value) {
              var oppornum = data[key]['oppor'];
              var html = '<tr>';
              if(data[key]['oppor'] == '') {
                html = html + '<td class="colhead nowrap" colspan="2">Hors codes promos</td>';
              } else {
                var oppor = publics.getOppor(oppornum);
                console.log('oppo : ' + oppor);
    // oppor est toujours undefined alors qu'il y a bien un résultat :(
                html = html + '<td class="colhead nowrap" colspan="2"><i>' + oppornum + '</i> - ' + oppor + '</td>';
              }
              html = html + '</tr>';
              console.log(html);
            });
          },
          error: function(){
            console.log('no data');
          }
        });
      }
     
      publics.getOppor = function (oppor) {
        $.ajax({
          url: privates.url,
          cache: false,
          type: "GET",
          dataType: "json",
          data: {
            a: 'getoppor',
            oppor: oppor,
            j: 1
          },
          success: function(data) {        
            return(data);
          },
          error: function() {
            console.log('pas d oppor');
          }
        });
    La partie php
    Code php : 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
    	  public function getOppor() {
    			$oppor = $this->purge($_GET['oppor']);
     
    	    if(!empty($oppor)) {
    	      $oppor = $this->database->get('oppor',
    	        [
    	          'oppdes'
    	        ], [
    	          'oppnum' => $oppor
    	        ]);
    	      echo json_encode($oppor['oppdes']);
    	    } else {
    	      $oppor = $this->database->select('oppor',
    	        [
    	          'oppnum',
    	          'oppdes'
    	        ]);
    	      echo json_encode($oppor);
    	    }
    	  }


    Est-ce que vous avez une idée de où peut provenir le problème ?
    Merci d'avance.

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 415
    Points : 4 865
    Points
    4 865
    Par défaut
    Bonjour,

    C'est un problème de synchronisation, car javascript n'attendra pas le retour de la fonction pour continuer le traitement.

    La question que tu dois te poser est : pourquoi tu fais l'aller retour vers le serveur 2 fois alors que tu pouvais tout récupérer depuis le résultat de la première requête ajax.

  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2008
    Messages : 231
    Points : 82
    Points
    82
    Par défaut
    Bonjour,

    Effectivement c'est pas top de faire des allez retours en javascript.

    J'ai ré-écris ma fonction php pour qu'elle renvoie tout d'un coups et bizarrement ça marche en plus d'être bien plus logique

    Merci de ton aide.

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

Discussions similaires

  1. Plusieurs return dans une fonction
    Par ninikkhuet dans le forum Langage
    Réponses: 4
    Dernier message: 19/05/2010, 12h45
  2. Mettre le return d'une fonction dans une balise input
    Par khaled.mann dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/04/2009, 06h55
  3. plusieurs return dans une fonction?
    Par contremaitre dans le forum C
    Réponses: 27
    Dernier message: 21/02/2008, 09h35
  4. valeur du return dans une "fonction"
    Par Papy214 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 20/12/2007, 15h53
  5. [PHP-JS] return d'une fonction checkbox
    Par xaaros dans le forum Langage
    Réponses: 2
    Dernier message: 22/12/2006, 15h22

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