Avatar billede jtp Nybegynder
16. november 2002 - 14:31 Der er 7 kommentarer og
1 løsning

array i array - hjælp til opdatering af eksisterende array

Hejsa

Jeg har et array, som jeg skal benytte som indkøbskurv. Jeg har derfor behov for at kunne indsætte yderligere værdier i arrayet.

Til det har jeg oprettet en function, som jeg forsøger at benytte via et link. Jeg er meget nybegynder og har lidt svært ved at gennemskue hvor det går galt.

Jeg vedlægger hele koden i håb om, at der et kvikt hoved, der kan hjælpe mig :o)

---klip---------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<% @Language="JavaScript" %>
<html>
<head>

<title>Array 4</title>

</head>
<body>


<%
    var ArrBasket = new Array();
    ArrBasket[0] = new Array();
    ArrBasket[1] = new Array();
    ArrBasket[2] = new Array();
   
    ArrBasket[0][0] = 802000
    ArrBasket[0][1] = "Carlsberg, Elephant"
    ArrBasket[0][2] = 4
    ArrBasket[0][3] = 82
   
    ArrBasket[1][0] = 802010
    ArrBasket[1][1] = "Carlsberg, Carls Special"
    ArrBasket[1][2] = 10
    ArrBasket[1][3] = 27
   
    ArrBasket[2][0] = 802020
    ArrBasket[2][1] = "Tuborg, Classic"
    ArrBasket[2][2] = 5
    ArrBasket[2][3] = 125
   
    Response.Write("<center><table border=1 width=\"500\">");
    Response.Write("<tr>");
    Response.Write("<td>No.</td> <td>Product ID</td> <td>Product Name</td> <td>Quantity</td> <td>Price</td><td>Total</td>");
   
  for (i = 0; i <= ArrBasket.length-1; i++){
    var count, totalPrice, total;
        count = i+1;
    totalPrice = (ArrBasket[i][2]*ArrBasket[i][3]);
        Response.Write("<tr><td align=\"center\">" + count + "</td><td>" + ArrBasket[i][0] + "</td><td><a href=\"?productID=" + ArrBasket[i][0] + "\">" + ArrBasket[i][1] + "</a></td><td align=\"right\">" + ArrBasket[i][2] + "</td><td align=\"right\">" + ArrBasket[i][3] +  "</td><td align=\"right\">" + totalPrice +  "</td></tr>");
        }
  Response.Write("</table></center>");

    %>


   
   
   
<%
    function addProduct(productID, productName, quantity, price) {

    laengde = ArrBasket.length;
   
    ArrBasket[laengde] = new Array();
    ArrBasket[laengde][0] = productID
    ArrBasket[laengde][1] = productName
    ArrBasket[laengde][2] = quantity
    ArrBasket[laengde][3] = price
    }
%>
    <a href="java script:addProduct(745050, Tuborg Julebrug, 2, 98)">Læg i kurv</a>
</body>
</html>

---klip---------------------

Når jeg trykker på linket "Læg i kurv" får jeg at vide, at "Der opstod en fejl på siden."
Detaljerne for denne fejlmeddelelser er:
Linie: 1
Tegn: 27
Fejl: Tegnet '}' var ventet
Kode: 0
URL: http://localhost/array.asp

Håber der er nogen, der kan hjælpe....
Avatar billede Slettet bruger
16. november 2002 - 16:39 #1
En meget enkel fejl:

<a href="java script:addProduct(745050, 'Tuborg Julebryg', 2, 98)">Læg i kurv</a>

Du skal huske at behandle den anden parameter som en streng, derfor apostrofferne.
Avatar billede jtp Nybegynder
16. november 2002 - 16:55 #2
Fandt selv denne fejl: Tuborg Julebrug -> Tuborg Julebryg :O)

Anyway, selvom jeg smider apostrofferne omkring tekststrengen virker det stadig ikke.

Hvad går der galt?
Avatar billede Slettet bruger
16. november 2002 - 17:01 #3
Har du ikke blandet ASP og JavaScript sammen? Hvis du satte script-tags rundt om funktionen addProduct, ville det formentlig virke, men så bliver du nødt til at lave lidt fiks-fakseri for at kunne sende informationerne tilbage til serveren.
Avatar billede jtp Nybegynder
16. november 2002 - 17:10 #4
Burde man ikke kunne afvikle JavaScript i ASP-klammer (<% %>)?

Jeg ville helst have, at det kunne lade sig gøre, da man på den måde jo har mulighed for at skjule sin kode, men det er absolut ikke et krav.

Kan du komme med et eksempel på de "fiks-fakserier" du henviser til?

Jeg er lidt på bar bund.
Avatar billede Slettet bruger
16. november 2002 - 17:15 #5
OK, du blander de to ting totalt sammen.

Rule number 1:
ASP afvikles på serveren. JavaScript afvikles på klienten, dvs. brugerens browser.
ASP kan ikke uden videre aflæse en variabel fra klienten, hvis ikke dataene er sendt til serveren først. Omvendt kan man ikke kalde en ASP-funktion direkte fra en webside, hvis ikke serveren kontaktes, fx ved sideskift.

Er det et databasesystem, du vil lave?

P.S. Glem det med at skjule din kode. Det er så ynkeligt at prøve at gemme noget for omverdenen, specielt noget så enkelt. Hvis alle gjorde det, ville der ikke være nogen kildekoder at lære af mere, og det ville være et enormt tab.
Desuden kan intet gemmes helt alligevel.
Avatar billede jtp Nybegynder
16. november 2002 - 17:34 #6
Betyder det, at hvis jeg f.eks. laver en side, der hedder: addproduct.asp og linket kommer til at hedde noget i stil med:

<a href="addproduct.asp?productID=745050&productName='Tuborg Julebryg'&quantity=2&price=98">Læg i kurv</a>

og afvikler koden på den side via noget Request.QueryString evt. i en session, så burde det virke?

For også lige, at svare på dit spørgsmål omkring databasesystem, så er svaret ja.
Avatar billede Slettet bruger
16. november 2002 - 19:19 #7
Ja. Der skal dog ikke apostroffer rundt om Tuobrg Julebryg her. Og muligvis bliver du nødt til at skrive mellemrum som %20 og så køre en slasg urldecode-funktion i dit ASP-script. Men prøv det ad.
Avatar billede jtp Nybegynder
10. marts 2003 - 23:23 #8
Hov, lukker lige spørgsmålet. Bedre sent end aldrig...

Tak for hjælpen, phoenixv.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester