Partage
  • Partager sur Facebook
  • Partager sur Twitter

portée des variables

Sujet résolu
    16 octobre 2018 à 23:34:16

    Bonjour,

    Merci d'avance pur votre aide, alors voilà, je fais un site en ajax.

    Mais c'est au niveau du js que j'ai un petit problème, je créé 2 variables globales : une variable normale et l'autre un tableau, que je fais passer dans la requête ajax (fonction success).

    La variable index et namePhotos dans le success se modifient bien et à la sortie de l'ajax avant $.("nexPhotos"), il n'y a que index qui garde sa valeur (j'ai fais un test en mettant index = 2 dans le sucess).

    Voici le code js :

    var index;
    var namePhotos = [];
    
    $(document).ready(function(){ 
        
        $('.chooseDiapos').click(function(e){    
            e.preventDefault();
            var datas = $('.voirDiapos').serializeArray();
            $.ajax({
                type: 'POST',
                url: '/diapos/voir',            
                dataType: 'JSON',
                data: datas,
                async: false,
                success: function(data){
                    index = 2;
                    if(typeof data === 'object'){
                        var d = data[0];
                        var images = d.toString().split(',');
                        
                        for(var i=0;i<images.length;i++){
                            namePhotos.push(location.hostname+"/Documents/Utilisateurs/"+data[data.length-1]+"/diaporama/"+images[i]);
                            console.log(namePhotos[i]);
                            console.log(index);
                        
                        }
                        $("body").load('/diapos/voir/'+data[data.length-2]);
                        
                    }
    
    
                },
                error: function(){
                    $("body").load('/diapos/voir');
                }
    
    
            });
        });
        console.log(index); //affiche bien 2
        console.log(namePhotos[0]); //affiche undefined
        $(".previousPhotos").click(function(){
            console.log(namePhotos[index]);
            document.getElementsByClassName("photos").src = namePhotos[index];
            if(index == 0){
               index = namePhotos.length-1; 
            }else{
                index-=1;
            }
        });
        
        $(".nextPhotos").click(function(){
            console.log(namePhotos[index]);
            document.getElementsByClassName("photos").src = namePhotos[index];
            if(index == namePhotos.length-1){
                index = 0;
            }else{
                index+=1;
            }
        });
    });
    
    

    Comment donc garder les valeurs dans le tableau namePhotos ?

    Merci de votre aide ,

    R-C-L

    • Partager sur Facebook
    • Partager sur Twitter
      16 octobre 2018 à 23:40:45

      Je pense que le console.info se fait avant le success du callback ajax.

      Du coup c'est vide

      • Partager sur Facebook
      • Partager sur Twitter
        17 octobre 2018 à 23:01:46

        D'accord merci pour ta réponse, mais comment résoudre ce problème ?
        • Partager sur Facebook
        • Partager sur Twitter
          18 octobre 2018 à 21:11:46

          Que veux tu faire? Pourquoi fais tu un console.log à l'extérieur de la requête AJAX?
          • Partager sur Facebook
          • Partager sur Twitter

          portée des variables

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown