11486 sujets

JavaScript, DOM et API Web HTML5

Bonjour à toutes et à tous,

Depuis longtemps sur Alsa mais première inscription et première question qui j'espère n'aura pas l'air trop stupide Smiley ravi

Alors voilà,

J'ai ce bout de code:

            
            var resultat;

            $.get("http://192.168.0.27/digital/2", function(data){
            //alert("Data: " + data.return_value);
            $valeur = data.return_value;
            var resultat = $valeur;
            alert(resultat);
            });
            alert(resultat);


J'aurai aimé sortir le résultat de $valeur hors du $.get (pensant utilisé une variable globale).
Cependant le résultat est toujours "undefined".

Parmis les deux alert(resultat); que j'ai, le premier qui arrive est celui qui se trouve hors de la fonction $.get (undefined) et le suivant est belle et bien celui de la fonction $.get (0 ou 1).
Je suppose que le soucis est une question d'exécution du script ? Ou alors je me trompe totalement.

Sachant que le resultat est soit 0 soit 1 (typeof = number).
J'ai déjà tenté de le changer en type string sans résultat.

Pouvez-vous m'aider ?

Bien à vous,

Leroyd
Bonjour Smiley smile

Question pas forcément stupide, en revanche elle prouve que tu es léger sur le sujet Smiley cligne rien de méchant dans cette remarque Smiley smile

$.get est un Ajax Jquery ...
Donc ta variable n'est remplie qu'au retour de cet ajax. Ce qui sera plus ou moins long avec l'exécution de l'ajax Smiley smile

Ensuite resultat est déclarée dans la fonction... donc elle n'est pas globale Smiley cligne si tu veux qu'elle soit globale il faut la déclarer avant le $.get Smiley cligne

et enfin pour finir, l'asynchrone est activé par défaut. du coup ton get ne coupe pas l'exécution du js.
Si tu veux attendre le résultat pour l'utiliser il faut que tu déclare async:false (pas sur que ça focntionne dans .get, il faudra peut être utiliser .ajax à la place). Par contre cela mettra une erreur warning dans la console, l'asynchrone étant désormais déconseillé dans les directives :s

Voilà bon courage
Merci Smiley smile

Ma variable globale resultat me semblait bien déclarée au dessus du get non ?

Ceci-dit le soucis venait de l'Asyncrone activé Smiley smile Donc un grand merci -> j'ai du bel et bien passé par $.ajax Smiley smile

Leroyd
Parfait si cela a corrigé ton problème Smiley cligne

Leroyd a écrit :

Ma variable globale resultat me semblait bien déclarée au dessus du get non ?


alors var resultat; déclare la variable

si tu le fait au dessus et dedans tu déclares un variable globale et tu redéclare une variable locale Smiley smile

pour que resultat soit globale il faut que dans ta fonction tu enlève var de devant Smiley cligne