Vous le savez sûrement, pour passer des donnée entre deux pages il existe deux méthode principale : le GET et le POST.
Le GET (celui qui nous intéresse) est la concaténation des variables a la suite de l'url.
exemple : http://www.exemple.com/page.php?variable1=valeur1&variable2=valeur2
Cette méthode permet de faire transiter facilement des informations entre 2 page sans utiliser de formulaire.
Seulement parfois, on aimerais passer des variable un peu plus complexe tels que les tableaux…
Voici la marche a suivre pour envoyer un tableau via GET.
Puisque on ne peu pas passer de structure dans l'url, on va reconstituer le tableau.
Admettons que votre tableau soit :
tbl[0]=“val1”
tbl[1]=“val2”
tbl[2]=“val3”
Pour l'envoyer par get, il faudra écrire :
tbl[]=val1&tbl[]=val2&tbl[]=val3
Evidement, vous pouvez être ammené a utiliser des tabelaux associatifs :
tbl['clef1']=“val1”
tbl['clef2']=“val2”
tbl['clef3']=“val3”
Dans ce cas, il faudrait ecrire :
tbl[clef1]=val1&tbl[clef2]=val2&tbl[clef3]=val3
La fonction ci dessous va parcourir un tableau donnée et le renvoyé sous forme de chaîne utilisable par get :
function Array2Get(tbl,nom) { //tbl est une variable tableau //nom est le nom du tableau (la même chose que tbl mais entre guillemet) var r='?'; for (var i in tbl) r+=nom+'['+i+']='+tbl[i]+'&'; return r; }
<html> <head> <script type="text/javascript"> function Array2Get(tbl,nom) { //tbl est une variable tableau //nom est le nom du tableau (la même chose que tbl mais entre guillemet) var r='?'; for (var i in tbl) r+=nom+'['+i+']='+tbl[i]+'&'; return r; } function exemple() { var t=Array(); t[0]='test1'; t[1]='test2'; t[2]='test3'; ret=Array2Get(t,'t'); document.location.href='b.php'+ret; } function exemple2() { var t=Array(); t['clef1']='test1'; t['clef2']='test2'; t[2]='test3'; ret=Array2Get(t,'t'); document.location.href='b.php'+ret; } </script> </head> <body> <a href="javascript:exemple();">exemple 1 : tableau -> appeler b.php</a> <br /> <a href="javascript:exemple2();">exemple 2: tableau associatif -> appeler b.php</a> </body> </html>
— iDo 13/04/2006 12:03
Discussion