ASP Recordset in JS Array
tschanne
- javascript
0 MarkX0 romy0 tschanne
0 Andreas Schneider0 tschanne
0 Sven Rautenberg0 Frank (no reg)0 tschanne
Ich bin gerade beim Versuch, ein ASP Recordset in ein JS-Array abzufüllen, allerdings funktioniert das noch nicht ganz. kann mir jemand sagen wo der fehler liegt?
<script type="text/javascript">
function DD(BI)
{
alert(BI);
var z = 0;
var BI1 = new Array();
BI1[0] = new Array(0);
var max = <%=rsBI1.RecordCount%>;
while(z < max)
{
<%
while not rsBI1.EOF
%>
BI1[z][1] = <%=rsBI1("MID")%>;
BI1[z][2] = <%=rsBI1("Beschaffungsinstrument")%>;
<%
rsBI1.MoveNext
wend
%>
z++;
}
alert("test")
alert(BI1[1][2]);
}
</script>
Moin,
Ich bin gerade beim Versuch, ein ASP Recordset in ein JS-Array abzufüllen, allerdings funktioniert das noch nicht ganz. kann mir jemand sagen wo der fehler liegt?
Was genau bedeutet "funktioniert noch nicht ganz" ?
MfG
MarkX.
Hi ,
Ich bin gerade beim Versuch, ein ASP Recordset in ein JS-Array abzufüllen, allerdings funktioniert das noch nicht ganz. kann mir jemand sagen wo der fehler liegt?
was funktioniert nicht? Wie heisst der Fehler? Was soll erscheinen, und erscheint stattdessen?
ohne Infos dazu kann Dir keiner helfen.
ciao
romy
was funktioniert nicht? Wie heisst der Fehler? Was soll erscheinen, und erscheint stattdessen?
Das JS Array füllt nur die rsBI1("MID") ins Array, den Rest net, das weiss ich weil ichs mittels alert überprüft habe, stattdessen gibt der ie die Meldung: undefined ist kein Objekt (oder so)
mit den Zeilenangaben kann man nichts anfangen
ohne Infos dazu kann Dir keiner helfen.
ciao
romy
Hallo tschanne,
BI1[z][1] = <%=rsBI1("MID")%>;
BI1[z][2] = <%=rsBI1("Beschaffungsinstrument")%>;
Wenn der Wert von Beschaffungsinstrument ein String ist, dann fehlen die Anführungszeichen:
BI1[z][2] = '<%=rsBI1("Beschaffungsinstrument")%>';
Grüße
Andreas
hi,
genau das wars :)
vielen dnak
mfg tschanne
Moin!
Ich bin gerade beim Versuch, ein ASP Recordset in ein JS-Array abzufüllen, allerdings funktioniert das noch nicht ganz. kann mir jemand sagen wo der fehler liegt?
Du denkst zu kompliziert!
Du programmierst hier eine Schleife in Javascript, deren Code generiert wird durch eine Schleife in ASP/VBScript.
Warum hast du die Javascript-Schleife drin? Man verwendet Schleifen doch eigentlich nur, damit man Dinge nur einmal programmieren muß, aber mehrfach ausführen kann.
Gib schlichten Javascript-Code aus! Du willst ein Recordset aus ASP in ein Array in Javascript überführen? Gut. Der Code in fertigem Javascript sieht so aus:
var BI1 = new Array();
var BI1[0] = new Array();
var BI1[0][0] = "dein String 1";
var BI1[0][1] = "dein String 2";
var BI1[1] = new Array();
var BI1[1][0] = "....";
... und so weiter.
Natürlich kann man die Arraydefinition auch abkürzen:
var BI1 = new Array();
var BI1[0] = new Array("dein String 1","dein String 2","weitere Strings...");
var BI1[1] = new Array("...","und so weiter...");
Deine Aufgabe in ASP ist es jetzt nur noch, so einen Text zu generieren und an den Browser zu schicken.
Denn deine Schleife hier läuft noch aus ganz anderen Gründen schief! Insbesondere definiert sie nur für BI1[0] ein neues inneres Array, nicht aber für die folgenden Elemente.
Und ich bezweifle auch ernsthaft, ob es dir was bringt, wenn alle deine JS-Arrayelemente gleich sind.
while(z < max)
{
<%
while not rsBI1.EOF
%>
BI1[z][1] = <%=rsBI1("MID")%>;
BI1[z][2] = <%=rsBI1("Beschaffungsinstrument")%>;
<%
rsBI1.MoveNext
wend
%>z++;
}
Der resultierende Code dieser Schleife wird sein:
while(z < max)
{
BI1[z][1] = "MID-1";
BI1[z][2] = "Beschaffungsinstrument-1";
BI1[z][1] = "MID-2";
BI1[z][2] = "Beschaffungsinstrument-2";
BI1[z][1] = "MID-3";
BI1[z][2] = "Beschaffungsinstrument-3";
BI1[z][1] = "MID-4";
BI1[z][2] = "Beschaffungsinstrument-4";
z++;
}
Und das ist ganz sicher nicht, was du willst.
Beachte außerdem beim Ausgeben deines Strings, dass enthaltene doppelte und/oder einfache Anführungszeichen des TEXTES Auswirkungen auf den entstehenden Javascript-Code haben werden und entsprechend escapet werden müssen.
- Sven Rautenberg
Hi,
imho gehst du falschherum vor, du musst "in ASP" mit einer Schleife
über das Recordset die Ausgabe an den Clientbrowser schreiben.
Du kannst kein (erst später laufendes) clientseitiges JS mit serverseitigem
ASP verkitten, und besonders nicht in einer JS-Funktion, bin ich der
Meinung.
Was ASP an den Client zurückschreiben muss, ist
Response.Write("<script type='text/javascript'>")
Response.Write("var BI1 = new Array();")
i = 0
do until rsBI1.EOF
Response.Write("BI1[" + i + "] = new Array(2);")
Response.Write("BI1[" + i + "][0] = " + rsBI1("MID") + ";")
Response.Write("BI1[" + i + "][0] = " + rsBI1("Beschaffungsinstrument") + ";")
i = i + 1
loop
...
Response.Write("</script>")
das ergäbe dann, wenn es auf Client-Seite ankommt:
<script type="text/javascript">
var BI1 = new Array();
BI1[0] = new Array(2);
BI1[0][0] = "wert01";
BI1[0][1] = "wert02";
BI1[1][0] = "wert11";
BI1[1][1] = "wert12";
....
</script>
Viele Grüße,
Frank
Jetzt hab ich ein neues problem:
wenn ich das Recordset mit einer WHERE-Klausel beschränke, dann funktioniert es, ist das RecordSet allerdings grössen, und ich lese daten ohne where aus der db, funktioniert es nicht mehr, und es gibt die JS-Fehlermeldung ; erwartet, was allerdings gar nicht sein kann
var z = 0;
var s = 0;
var BI1 = new Array();
BI1[0] = new Array(0);
var max = <%=rsBI1.RecordCount%>;
alert(max);
while(z < max)
{
<%
while not rsBI1.EOF
%>
BI1[z][1] = <%=rsBI1("MID")%>;
BI1[z][2] = <%=rsBI1("Beschaffungsinstrument")%>;
BI1[z][3] = '<%=rsBI1("Bezeichnung")%>';
alert(BI1[z][3])
<%
rsBI1.MoveNext
wend
%>
z++;
}
Moin!
Jetzt hab ich ein neues problem:
Du hast zwei Antworten zu deinem alten Problem noch nicht beachtet. Vielleicht solltest du zuerst mal dein altes Problem lösen, bevor du mit einem neuen ankommst. :)
- Sven Rautenberg