Arrays an andere Seite übergeben

Status
Nicht offen für weitere Antworten.

Patrom

Grünschnabel
Hi @ all

Ich habe eine Frage:

Und zwar wie kann man ein Array an eine andere Seite übergeben und diese dort dann wieder als Array wiederzuverwenden (In einem JS Script)?

Thx
Pat-ro
 
Hi, Patrom,....

das geht über die URL oder indem du ein Formular sendest, welches für jedes Arrayelement ein Formularfeld enthält.

Bsp.1(per URL)
Code:
<html>
<head>
<title>Titel</title>
<script type="text/javascript">
<!--
myArray=new Array('bla','blubb','hossa');
targetUrl='ziel.htm';
function sendArray()
{
strArray='';
for(i=0;i<myArray.length;++i)
	{
	strArray+='myArray='+escape(myArray[i])+'&';
	}
document.location=targetUrl+'?'+strArray;
}
//-->
</script>
</head>
<body>
<a href="#"onclick="sendArray();return false;">Array senden</a>
</body>
</html>
"myArray" ist dabei der zu übermittelnde Array, targetUrl die URL der Zielseite.
Beim Klicken auf den Link in dieser Seite wird die Zielseite aufgerufen. Dabei wird an die URL ein String angehängt, welcher die Arraydaten beinhaltet.
Dieser sieht dann im Beispiel folgendermassen aus:
Code:
ziel.htm?myArray=bla&myArray=blubb&myArray=hossa&
Bsp.2(per Formular)
Code:
<html>
<head>
<title>Titel</title>
</head>
<body>
<form action="ziel.htm">
<input type="text"name="myArray"value="bla">
<input type="text"name="myArray"value="blubb">
<input type="text"name="myArray"value="hossa">
<input type="submit">
</form>
</body>
</html>
....für jedes Arrayelement erstellst du ein Formularfeld, welches als Namen den Namen des Arrays erhält. Wenn das Formular an die Zielseite gesendet wird, werden diese Felder übermittelt. Die URL, welche dann erscheint, ist abgesehen vom letzten '&' identisch mit der aus Bsp.1 .... auf die Art hast du aber die Möglichkeit, den Array durch Benutzereingaben ändern zu lassen, falls du es brauchst.

Die Zielseite "ziel.htm" sieht dann wie folgt aus:
Code:
<html>
<head>
<title>Titel</title>
<script type="text/javascript">
<!--
myArray=new Array();
strGET=String(location.search);
if(strGET!= "")
{
strGET=strGET.substring(1,strGET.length);
strGET=strGET.split('&');
for(i=0;i<strGET.length;++i)
	{
	tmpArray=strGET[i].split('=');
	if(tmpArray[0]=='myArray')
		{
		myArray[myArray.length]=unescape(tmpArray[1]);
		}
	}
}
//-->
</script>
</head>
<body>
<script type="text/javascript">
<!--
for(var key in myArray)
{
document.write('myArray['+key+'] =&gt; '+myArray[key]+'<br>');
}
//-->
</script>
</body>
</html>
Dort wird ein leerer Array "myArray[]" erstellt.
Dann wird mit "location.search()"ermittelt, ob die aktuelle URL Parameter enthält.
Ist dies der Fall, wird als erstes von den Parametern mit
Code:
strGET=strGET.substring(1,strGET.length);
das erste Zeichen entfernt... das ist das ? und wird nicht gebraucht.
Dann wird anhand des Delimiters "&" aus dieser Zeichenkette ein Array erzeugt, welcher somit als einzelne Elemente Namen und Wert des Übergebenen Parameters, getrennt durch ein "=" enthält.
Dieser entstandene Array wird in einer Schleife durchlaufen, wobei diesmal die einzelnen Elemente anhand des Trennzeichens "=" gesplittet werden.
Der so entstandene neue Array "tmpArray[]"enthält damit als erstes Element den Namen, und als 2. Element den Wert des jeweiligen Parameters.
Enthält das erste Element von "tmpArray"die Zeichenkette "myArray", wird an den eingangs definiertern Array "myArray[]" das 2.Element von "tmpArray[]" angehängt.

Zur Kontrolle wird dann letztendlich noch der Inhalt von "myArray[]" in die Seite geschrieben.... auf den Array kannst du normal zugreifen.

Zu beachten ist bei der Sache, dass die Datenmenge, welche du über die URL übergeben kannst, beschränkt ist. Sie liegt bei ca.2KB und kann je nach Browser variieren.
 
Status
Nicht offen für weitere Antworten.

Neue Beiträge

Zurück