Un coup oui, un coup non, j'y comprends rien au JS. porté des variables et trans

[Résolu]
Signaler
Messages postés
163
Date d'inscription
mercredi 10 novembre 2004
Statut
Membre
Dernière intervention
21 février 2006
-
Messages postés
163
Date d'inscription
mercredi 10 novembre 2004
Statut
Membre
Dernière intervention
21 février 2006
-
bonjour,
.

voilà, je charge un tableau (nommé tableau) par une fonction xmlHTTPRequest:

xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
eval(xhr_object.responseText);
crealiste(tableau);
affiche(tableau);
}}

j'utilise ma variable tableau comme argument de 2 fonctions et tout marche bien.

mais lorsque je veux l'utilisée ailleurs que dans le oreadystatechange, par exemple avec l'événement onchange sur une liste déroulante, rien ne se passe. pour info, si je déclare la variable tableau dans le script, tout marche à la perfection.

je suppute un problème de porté des variables dans javascript, mais comme je suis débutant en js, je n'ai pas de piste.

si quelqu'un à une idée sur le pourquoi du comment du parceque, merci.
A+

9 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
je récapépète :

le php, le xmlhttprequest, le dialogue entre le
serveur et le client... tout ça ne sert à rien ici.
2° si var tableau est défini dans une fonction ( c'est le cas ici )
c'est une variable locale, utilisable uniquement dans cette fonction.
faire var tableau; hors de toute fonction et dans la fonction
faire tableau= ( sans var )
Cordialement. Bul. ~
Mon Site qu'il est à Moi ~
<FO>
</FO>
</S< body>
Messages postés
163
Date d'inscription
mercredi 10 novembre 2004
Statut
Membre
Dernière intervention
21 février 2006

merci,

maintenant en faisant le var tableau dans la fonction de base, puis affectant les valeurs à la variable tableau dans la fonction, ça marche.

c'est étrange mais sur les quelques tuto "débuter Javascript", je n'ai rien trouvé sur la portée des variables, et d'où mon erreur.

merci
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour,
eval(...), je suppose que cela créé la variable tableau avec du JavaScript
plus que curieux ,d'ailleurs, de faire ça comme ça ! il y a une explication ?
elle est donc locale à la fonction.
pour l'utiliser "partout" : var tableau; en dehors de toute function
et ce sera une variable globale.
Cordialement. Bul. ~ Mon Site qu'il est à Moi ~<FO>
</FO>
</S< body>
Messages postés
163
Date d'inscription
mercredi 10 novembre 2004
Statut
Membre
Dernière intervention
21 février 2006

bonjour Bultez,

je vais finir par croire qu'il n'y a que toi sur le forum, merci de toujours essayer de m'aider.

bon, le but de l'exercice est de recevoir un tableau 2D contenant le résultat d'une requête sur une base mySQL via PHP.

pour cela, j'utilise un objet xmlhttprequest afin de faire la demande au serveur et celui-ci me renvoit donc le contenu de la table.

pour l'instant, je simule le serveur en faisant la requête sur un fichier .txt, je suis donc sur de la réponse.

je n'utilise à priori pas la bonne méthode pour obtenir ces infos et quelles soient globales. je suis prêt à utiliser d'autres méthodes si tu en connais.

Merci d'avance.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
>>je vais finir par croire qu'il n'y a que toi sur le forum
très loin de là, le hasard sûrement.
>>celui-ci me renvoit donc le contenu de la table.
dans une variable javascript dont on fait ce que l'on veut
mais pourquoi donc un eval(variable) ?
Cordialement. Bul. ~ Mon Site qu'il est à Moi ~<FO>
</FO>
</S< body>
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
>>je vais finir par croire qu'il n'y a que toi sur le forum
très loin de là, le hasard sûrement.
>>celui-ci me renvoit donc le contenu de la table.
dans une variable javascript dont on fait ce que l'on veut
mais pourquoi donc un eval(variable) ?
Cordialement. Bul. ~ Mon Site qu'il est à Moi ~<FO>
</FO>
</S< body>
Messages postés
163
Date d'inscription
mercredi 10 novembre 2004
Statut
Membre
Dernière intervention
21 février 2006

>>dans une variable javascript dont on fait ce que l'on veut
mais pourquoi donc un eval(variable) ?

ben,parceque je sais pas faire autrement.
le mieux serait de faire comment?

ps: dans mon fichier texte j'ai:
var enrg0=new Array ("A0","B0","C0");
var enrg1=new Array ("A1","B1","C1");
var tableau =new Array (enrg0, enrg1);

merci de m'éclairer la voie pour que ça marche.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
mais pourquoi donc récupérer un fichier texte avec
XMLHTTPREQUEST qui contient ce genre de chose ?

pour simplifier : le but de xmlhttprequest c'est de faire appel
à du php, et de récupérer le résultat généré par celui-ci dans
une variable javascript.

si le fichier texte ne contient que ce que l'on voit :
le php, le xmlhttprequest, le dialogue entre le
serveur et le client... tout ça ne sert à rien.

Cordialement. Bul. ~ Mon Site qu'il est à Moi ~<FO>
</FO>
</S< body>
Messages postés
163
Date d'inscription
mercredi 10 novembre 2004
Statut
Membre
Dernière intervention
21 février 2006

pour l'instant, je retourne un fichier txt afin de travailler sur le HTML et le javascript. Une fois cette partie finie, je retourne au PHP pour réaliser le script coté serveur, ce qui devrait me poser moins de problème.

le but du fichier texte est donc uniquement de limiter les sources d'erreurs possibles (je suis débutant en xHTML, JS et PHP, donc j'en fais des conneries) en simulant une réponse du serveur. le script PHP appellé retournant du txt ou du xml via la fonction echo, autant utilisé une réponse "type".

bon avec tout cela, toujours pas d'idée pour m'en sortir?
merci