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

Résolu
durand2504 Messages postés 163 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 21 février 2006 - 20 févr. 2006 à 17:21
durand2504 Messages postés 163 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 21 février 2006 - 21 févr. 2006 à 17:06
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

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 févr. 2006 à 15:52
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>
3
durand2504 Messages postés 163 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 21 février 2006
21 févr. 2006 à 17:06
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
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 févr. 2006 à 07:15
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>
0
durand2504 Messages postés 163 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 21 février 2006
21 févr. 2006 à 09:48
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 févr. 2006 à 09:57
>>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>
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 févr. 2006 à 09:57
>>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>
0
durand2504 Messages postés 163 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 21 février 2006
21 févr. 2006 à 12:50
>>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.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 févr. 2006 à 13:15
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>
0
durand2504 Messages postés 163 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 21 février 2006
21 févr. 2006 à 14:25
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
0
Rejoignez-nous