Bonjour à toutes et tous.
Tout ou presque est dit dans le titre. Voilà le problème : j'essaie de récupérer des données "GET" avec un script. Quand je vérifie à l'intérieur de la boucle "for" où je crée le tableau final à deux dimensions, chaque ligne contient bien des valeurs différentes; quand je vérifie de nouveau dans une autre boucle, toutes les lignes contiennent les mêmes valeurs, qui sont celles de la dernière ligne.
J'ai essayé plusieurs méthodes: création préalable des variables, création dynamique des variables; remplissage du tableau avec une regexp; analyse des valeurs "GET" puis remplissage d'un tableau intermédiaire simple puis remplissage du tableau à deux dimensions; exécution de toutes ces actions dans une seule fonction; exécution de chaque sous-ensemble d'actions dans des fonctions séparées. dans tous les cas le résultat est le même: lors de la création du tableau bidimensionnel tout semble correct, lors de sa relecture les valeurs sont modifiées.
Voici le code de la dernière version de mon script:
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
| <SCRIPT LANGUAGE="JavaScript1.2">
function delocaliser() {
brut = window.location.href;
brut = brut.substr(brut.indexOf('?')+1);
document.write(brut+'<br>');
decoffre = brut.split('&')
return decoffre;
}
function decomposer(parm, lng) {
var recomposer = new Array(lng);
for ( x = 0; x < lng; x++)
recomposer[x] = new Array(2);
for (x = 0; x < lng; x++) {
tableautmp = parm[x].split('=');
document.write('Paramètre '+x+' = '+parm[x]+'<br>');
document.write('Longueur de tableautmp = '+tableautmp.length+'<br>');
document.write('tableautmp[0] = '+tableautmp[0]+'; tableautmp[1] = '+tableautmp[1]+'<br>');
recomposer[x,0] = tableautmp[0];
recomposer[x,1] = tableautmp[1];
document.write('recomposer['+x+',0] = '+recomposer[x,0]+'; recomposer['+x+',1] = '+recomposer[x,1]+'<br>');
}
document.write('Longueur de recomposer = '+recomposer.length+'<br>');
for (x = 0; x < recomposer.length; x++) {
document.write('recomposer['+x+',0] = '+recomposer[x,0]+'; recomposer['+x+',1] = '+recomposer[x,1]+'<br>');
}
return recomposer;
}
function tuturer() {
tableausimple = delocaliser();
document.write('Longueur de tableausimple = '+tableausimple.length+'<br>');
for (x = 0; x < tableausimple.length; x++)
{
document.write('Élément de tableausimple '+x+' = '+tableausimple[x]+'<br>');
}
tableau = decomposer(tableausimple, tableausimple.length);
}
</SCRIPT> |
Et voici ce que j'obtiens en sortie de l'exécution de "tuturer" lancé avec onLoad (URL = [chemin]tutures.htm?preunch=on&deuss=va&troiss=voir) :
preunch=on&deuss=va&troiss=voir
Longueur de tableausimple = 3
Élément de tableausimple 0 = preunch=on
Élément de tableausimple 1 = deuss=va
Élément de tableausimple 2 = troiss=voir
Paramètre 0 = preunch=on
Longueur de tableautmp = 2
tableautmp[0] = preunch; tableautmp[1] = on
recomposer[0,0] = preunch; recomposer[0,1] = on
Paramètre 1 = deuss=va
Longueur de tableautmp = 2
tableautmp[0] = deuss; tableautmp[1] = va
recomposer[1,0] = deuss; recomposer[1,1] = va
Paramètre 2 = troiss=voir
Longueur de tableautmp = 2
tableautmp[0] = troiss; tableautmp[1] = voir
recomposer[2,0] = troiss; recomposer[2,1] = voir
Longueur de recomposer = 3
recomposer[0,0] = troiss; recomposer[0,1] = voir
recomposer[1,0] = troiss; recomposer[1,1] = voir
recomposer[2,0] = troiss; recomposer[2,1] = voir
Bien entendu, la lecture de la variable "tableau" de la fonction "tuturer" donne le même résultat que la relecture de "recomposer".
Si quelqu'un pouvait m'éclairer sur la manière de remédier à ce problème, ça serait excellent, et me l'expliquer, ça serait formidable !
Merci d'avance pour toute aide.
Partager