Avatar billede jbjerre Nybegynder
10. marts 2004 - 19:54 Der er 16 kommentarer og
1 løsning

Kald Function eller Sub

Hvordam kalder jeg en Sub eller Funktion

KodeEks:
Fejl I If-sætningen skal kalde Sub Fejl()
'*******************************************************

<%@ Language=VBScript %>

<%
On error resume next

  if err.Number <> 0 then
      Fejl
  end if
%>

<SCRIPT LANGUAGE=VBSCRIPT>
    Sub Fejl()
        msgbox err.description
    end Sub
</SCRIPT>

'*******************************************************

Er dette noget der let kan lade sig gøre ????


Hilsen
JBjerre
Avatar billede nmh Nybegynder
10. marts 2004 - 19:58 #1
Nu har du blandet asp-kode med kode som bliver sendt til klienten.
Kode anbragt mellem <% og %> bliver kun afviklet på serveren.
Din sub-rutine fejl() er anbragt i et script, som sendes til klienten.
Denne rutine kan ikke aktiveres af kode, der kører på serveren.
Avatar billede thesurfer Nybegynder
10. marts 2004 - 19:59 #2
Du blander 2 ting sammen:
ASP = serverside scriptsprog
VBScript = klientside scriptsprog

De to sprog kan ikke kommunikere med hinanden, direkte. Der erikke noget der hedder "msgbox" i ASP. Det er der i VBScript.
Avatar billede nmh Nybegynder
10. marts 2004 - 20:00 #3
Så hvis du vil have en fejl til at kalde en procedure, der kan håndtere en fejlsituation, skal denne rutine ligge i den kode, der afvikles af på serveren.
Avatar billede thesurfer Nybegynder
10. marts 2004 - 20:00 #4
Eksempel:
<%
On error resume next

  if err.Number <> 0 then

response.write "<SCRIPT LANGUAGE=VBSCRIPT>"
response.write "msgbox """ & err.description & """
response.write "</SCRIPT>"

  end if
%>
Avatar billede websam Nybegynder
10. marts 2004 - 21:41 #5
Lav den sådan her :

<%@ Language=VBScript %>

<%
On error resume next

if err.Number <> 0 then
    Call Fejl()
end if

Sub Fejl()
    Response.Write err.description
end Sub
%>

Husk på at det ikke er alle browser typer der kan klare Klientside script så vidt jeg husker er det kun msie 5.0 -> der kan :o)

/Websam
Avatar billede jbjerre Nybegynder
10. marts 2004 - 21:50 #6
Min ide var at fejlbeskrivelsen skulle fremkomme i en Msgbox
Avatar billede jbjerre Nybegynder
10. marts 2004 - 21:51 #7
Min ide var at fejlbeskrivelsen skulle fremkomme i en Msgbox
Avatar billede thesurfer Nybegynder
10. marts 2004 - 21:51 #8
Websam> hehe.. så vidt jeg vel, understøtter aller browser klientside scripts :)
Men VBScript understøttets KUN af Microsoft Internet Explorer :)

jbjerre> Har du prøvet mit forslag?
Avatar billede thesurfer Nybegynder
10. marts 2004 - 21:56 #9
Og så ville jeg nok bruge JavaScript, da det i modsætning til VBScript, understøttes af alle browsere..

Mit eksempel med java script:

<%
On error resume next

  if err.Number <> 0 then
    response.write "<script type=""text/JavaScript"">"
    response.write "alert(""" & err.description & """);"
    response.write "</script>"
  end if
%>

Eller:

<%
On error resume next

sub fejl()
response.write "<script type=""text/JavaScript"">"
response.write "alert(""" & err.description & """);"
response.write "</script>"
end sub

if err.Number <> 0 then
    fejl()
end if
Avatar billede thesurfer Nybegynder
10. marts 2004 - 21:58 #10
Du kan også forbedre det:

<%
On error resume next

function fejl(besked)
response.write "<script type=""text/JavaScript"">"
response.write "alert(""" & besked & """);"
response.write "</script>"
end function

if err.Number <> 0 then
    fejl(err.description)
end if
%>

Så kan du osgå bruge: fejl("hello world")
Så vil en dialogbox komme frem med tekst "hello world"..
Avatar billede jbjerre Nybegynder
11. marts 2004 - 09:03 #11
Tak for hjælpen thesurfer - Opret svar for points.
Avatar billede thesurfer Nybegynder
12. marts 2004 - 19:19 #12
Det gør jeg så :)
Undskyld forsinkelsen.. har været lidt væk..
Avatar billede thesurfer Nybegynder
12. marts 2004 - 19:24 #13
En rettelse til funktionen:

function fejl(besked)
besked = replace(besked, chr(34), "\" & chr(34))  ''' dette er en ny linie
response.write "<script type=""text/JavaScript"">"
response.write "alert(""" & besked & """);"
response.write "</script>"
end function

Denne linie erstatter "-tegnet med \", hvilket opfattes som et almindeligt "-tegn, af java script:

besked = replace(besked, chr(34), "\" & chr(34))

Så undgår du den fejl.
Avatar billede jbjerre Nybegynder
13. marts 2004 - 09:25 #14
Hej Thesurfer

Hvad præsist udfører:
besked = replace(besked, chr(34), "\" & chr(34))

Hilsen JBjerre
Avatar billede thesurfer Nybegynder
13. marts 2004 - 13:29 #15
Ja, du skal bare spørge hvis du har spm :-)

<citat>
Denne linie erstatter "-tegnet med \", hvilket opfattes som et almindeligt "-tegn, af java script:
</citat>

Dvs, den erstatter "gåseøjne" med "backslash" + "gåseøjne"..
Eksempel:
Hans "Hansi" Hansen bliver til Hans \"Hansi\" Hansen

Når JavaScipt ser \" forstår den at den skal vise gåseønje i stedet..

I JavaScript starter man på en streng/tekst, vedat starte med enten '-tegnet eller "-tegnet. Hvis man bruger start-tegnet for anden gang, aflsluttes strengen. Så opstår der fejl fordi der står noget efter '-tegnet eller "-tegnet.

Eksempel (forkert):
alert("Hans "Hansi" Hansen");

strengen afsluttes lige før "Hansi", fordet start-tegnet afsluttes af "-tegnet lige før Hansi.


Giver det mening, eller skal jeg prøve igen? (du siger bare til)
Avatar billede jbjerre Nybegynder
14. marts 2004 - 10:37 #16
Hej Thesurfer

Tak for forklaringen - den var ok.
Jeg kan bedst lide at vide hvofor koden er skrevet som den er  ;-)

Hilsen JBjerre
Avatar billede thesurfer Nybegynder
14. marts 2004 - 15:52 #17
jbjerre> Det var så lidt :-)
Hvis man forstår koden, kan man nemmere tilpasse den :-)
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
Kurser inden for grundlæggende programmering

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