Sven Rautenberg: ASP Recordset in JS Array

Beitrag lesen

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