Array als Parameter übergeben
Peter
- vb-script
Hallo,
kann mir vielleicht jemand sagen, was in folgendem Code beim Übergeben des Arrays als Parameter an die Prozedur Gruss() falsch ist?
<%
public myArray(1)
myArray(0) = "Franz"
myArray(1) = "Fritz"
%>
<html>
<head>
<title>Neue Seite 1</title>
<script language="VBScript">
Sub Gruss(y)
MsgBox "Hallo " & y(0) & " und " & y(1)
End Sub
</script>
</head>
<body>
<form>
<input type="button" name="Button1" value="Drücken"
language="VBScript" onClick="call Gruss(<%=myArray%>)">
</form>
</body>
</html>
Es erscheint folgende Fehlermeldung:
Fehlertyp:
Antwortobjekt, ASP 0106 (0x80020005)
Es wurde ein unbekannter Datentyp gefunden.
Typ passt nicht
Ich würde mich sehr freuen, wenn mir jemand helfen könnte, da ich schon eine Weile versuche, dieses Problem zu lösen, aber nicht dahinterkomme, was falsch ist.
Schönen Gruß Peter
<input type="button" name="Button1" value="Drücken"
language="VBScript" onClick="call Gruss(<%=myArray%>)">
Spontan würde ich sagen ... du schreibst ja den Inhalt des Arrays in den Funktionsaufruf anstatt die Variable zu übergeben.
Kann mich aber auch irren, bin in ASP nicht so fit, eher PHP. Da schreibt der Short-Tag "Array" an die Stelle, so dass die Funktion mit Gruss("Array") aufgerufen wird. Da PHP aber die short tags von ASP "geliehen" hat, sollte es ähnlich funktionieren.
Der Yeti
Da schreibt der Short-Tag "Array" an die Stelle, so dass die Funktion mit Gruss("Array") aufgerufen wird.
Das mit dem Short-Tag hab ich nicht so ganz verstanden. Wie funktioniert das?
Habe gerade noch einmal nachgesehen und in ASP ist es genauso wie in PHP: Der Short Tag <%=...%> schreibt den Inhalt der Variable an diese Stelle im HTML-Dokument. Bedeutet im Klartext, deine Variable wird nicht übergeben. Wenn überhaupt, wird etwas in der Form Gruss("Array") übergeben.
Da du aber nur zwei Arrayelemente überhaupt brauchst, kannst du ja auch den Aufruf mit Gruss('<%=myArray(0)%>','<%=myArray(1)%>') machen.
Der Yeti
Wenn überhaupt, wird etwas in der Form Gruss("Array") übergeben.
Ich habe es jetzt mal ohne die Tags versucht, es funktioniert trotzdem nicht. Ich kann doch auch keine Script-Variable ohne die Short-Tags einfach in html benutzen (auch nicht übergeben, oder?
Da du aber nur zwei Arrayelemente überhaupt brauchst, kannst du ja auch den Aufruf mit Gruss('<%=myArray(0)%>','<%=myArray(1)%>') machen.
Das geht leider nicht, da sich das Array erst beim Laden der Seite dynamisch füllt, also vorher nicht bekannt ist, wie viele Elemente es haben wird.
Gruß Peter
Ich habe es jetzt mal ohne die Tags versucht, es funktioniert trotzdem nicht. Ich kann doch auch keine Script-Variable ohne die Short-Tags einfach in html benutzen (auch nicht übergeben, oder?
Wohl kaum, da du das ASP auf dem Server ausführst und dort auch das Array im Speicher ist. Daher kannst du es auch nicht von der Webseite auf dem Client aus referenzieren.
Ein Workaround könnte z.B. sein, das Array zunächst zu serialisieren, dann als String zu übergeben und auf dem Server wieder zu de-serialisieren. In PHP gibt es dafür eine schöne Funktion: http://php.net/serialize
Das geht leider nicht, da sich das Array erst beim Laden der Seite dynamisch füllt, also vorher nicht bekannt ist, wie viele Elemente es haben wird.
OK, war mir fast klar.
Der Yeti
OK, ich werd mal schaun, ob es sowas in VBS auch gibt. Danke