Avatar billede donslund Nybegynder
26. juni 2003 - 21:54 Der er 20 kommentarer og
1 løsning

Alternativ til server.execute.

Hvad gør jeg nå jeg ikke kan bruge server.execute?

<%
if request.querystring("inc")="" then
%>
<!-- #include file="start.inc" -->
<%
else
response.write "<!-- #include file='" & Request.querystring("inc") & ".inc' -->"
end if
%>
Avatar billede eagleeye Praktikant
26. juni 2003 - 21:58 #1
Så må du simulere det, prøv at kigge på de to links:
http://www.asp101.com/articles/michael/dynamicincludes/default.asp
http://www.4guysfromrolla.com/webtech/042602-1.shtml

Er det bare en tekst fil som skal udskrives, altså der ikke er noget kode i include filen så kan du bruge FSO og udskrive indholdet af filen.
Avatar billede donslund Nybegynder
28. juni 2003 - 16:19 #2
Jeg er ikke helt med. Er der nogen der kan uddybe?

Det jeg har er:

<%
if request.querystring("inc")="" then
Server.Execute("start.inc")
else
Server.Execute(Request.querystring("inc")) & ".inc"
End IF
%>

Men det virker som sagt ikke. Hvad skal jeg erstatte det med?
Avatar billede eagleeye Praktikant
28. juni 2003 - 17:21 #3
Include filen skal enten være en ren ASP file eller ren HTML kode.
Avatar billede eagleeye Praktikant
28. juni 2003 - 17:24 #4
Princippet er at man laver en function som denne som kan læse nidhodlet af en fil:

Function GetFileContentsForExecution(sTargetFile)
  Dim oFSO, sContents
 
  'Obtain a reference to the FileSystemObject
  Set oFSO = Server.CreateObject("Scripting.FileSystemObject")
 
  'Obtain the file contents
  sContents = oFSO.OpenTextFile(Server.MapPath(".") & _
                                "\" & sTargetFile).ReadAll
  Set oFSO = Nothing 'reference to the FileSystemObject

  GetFileContentsForExecution = sContents
End Function


så udskirfter man denne linje:
response.write "<!-- #include file='" & Request.querystring("inc") & ".inc' -->"

med:

response.write GetFileContentsForExecution( Request.querystring("inc") & ".inc")
Avatar billede donslund Nybegynder
28. juni 2003 - 17:33 #5
Det giver denne fejl:

Typerne passer ikke sammen: 'GetFileContentsForExecution'
Avatar billede eagleeye Praktikant
28. juni 2003 - 17:40 #6
Hvad inde holder  Request.querystring("inc") ?
Kommer  Request.querystring("inc") & ".inc" til at give et korrekt filnavn?
Avatar billede donslund Nybegynder
28. juni 2003 - 17:44 #7
http://www.vorbasse-marked.dk/default.asp?inc=a-z

Det er hvad der står i adresselinien og a-z.inc er en fil der eksisterer.
Avatar billede nielle Nybegynder
28. juni 2003 - 17:49 #8
Det vil sikkert gå bedre hvis du retter din nr. 2 Servere.Execute til:

Server.Execute(Request.QueryString("inc") & ".inc")
Avatar billede donslund Nybegynder
28. juni 2003 - 17:51 #9
njelle ---> jeg ved ikke om det er smuttet, men jeg kan ikke benytte server.execute ;-)
Avatar billede nielle Nybegynder
28. juni 2003 - 17:55 #10
donslund -> Jo det var jeg nu godt opmærksom på. Men samtidigt skrev du et eksempel (16:19:11) hvor du gjorde, og hvori at der var en graverende syntaxfejl - denne kode ville aldrig have kunnet køre. Jeg satsede og gættede på at dette måske snare var roden til dine problemer.
Avatar billede donslund Nybegynder
28. juni 2003 - 18:00 #11
Nej, min kode ser nu såldes ud:

<%
if request.querystring("inc")="" then
%>
<!-- #include file="start.inc" -->
<%
else
response.write GetFileContentsForExecution(Request.querystring("inc") & ".inc")
end if
%>
Avatar billede eagleeye Praktikant
28. juni 2003 - 18:08 #12
Du skal også ligge functionen GetFileContentsForExecution in i din kode ellers virker det ikke. Du kan ligge den function nede i bundet at din fil:

<%
if request.querystring("inc")="" then
%>
<!-- #include file="start.inc" -->
<%
else
response.write GetFileContentsForExecution(Request.querystring("inc") & ".inc")
end if
%>

<%
'Functioner
Function GetFileContentsForExecution(sTargetFile)
  Dim oFSO, sContents
 
  'Obtain a reference to the FileSystemObject
  Set oFSO = Server.CreateObject("Scripting.FileSystemObject")
 
  'Obtain the file contents
  sContents = oFSO.OpenTextFile(Server.MapPath(".") & _
                                "\" & sTargetFile).ReadAll
  Set oFSO = Nothing 'reference to the FileSystemObject

  GetFileContentsForExecution = sContents
End Function
%>
Avatar billede donslund Nybegynder
28. juni 2003 - 18:12 #13
Så var der banko. Jeg havde naturligvis skrevet funktionen i dokumentet, men hvad min overophedede hjerne ikke kunne tænke til var, at den selvfølgelig ikke skulle ligge sammen med javascript funktionerne.

tak for hjælpen.
Avatar billede donslund Nybegynder
28. juni 2003 - 18:15 #14
Og der var jeg lige hurtig nok, for den kører ikke det asp der ligger i inc-filerne. Den skriver udelukkende teksten fra filerne. Hvorfor dog det?
Avatar billede eagleeye Praktikant
28. juni 2003 - 18:21 #15
Så skal du bruger Exeute men det skal være ren ASP kode som er i filen.
Avatar billede eagleeye Praktikant
28. juni 2003 - 18:23 #16
Så skal functionen laves om til dette:

Function GetFileContentsForExecution(sTargetFile)
  Dim oFSO, sContents
 
  'Obtain a reference to the FileSystemObject
  Set oFSO = Server.CreateObject("Scripting.FileSystemObject")
 
  'Obtain the file contents
  sContents = oFSO.OpenTextFile(Server.MapPath(".") & _
                                "\" & sTargetFile).ReadAll
  Set oFSO = Nothing 'reference to the FileSystemObject

  'Remove the ASP scripting tags
  sContents = Replace (sContents, "<" & "%", "")
  sContents = Replace (sContents, "%" & ">", "")
  GetFileContentsForExecution = sContents
End Function



og denne:
response.write GetFileContentsForExecution(Request.querystring("inc") & ".inc")

laves om til:

Execute GetFileContentsForExecution(Request.querystring("inc") & ".inc")
Avatar billede donslund Nybegynder
28. juni 2003 - 18:28 #17
'En sætning var ventet'

og det betyder?
Avatar billede eagleeye Praktikant
28. juni 2003 - 18:31 #18
Er det ren ASP kode i din fil du includer?
Avatar billede donslund Nybegynder
28. juni 2003 - 18:32 #19
Du mener at den ikke indeholder javascript og sådan noget?
Eller hvis du mene om den er blandet asp og html, så ja, den er blandet.
Avatar billede eagleeye Praktikant
28. juni 2003 - 18:37 #20
Execute kan kun udføre ASP kode og ikke HTML koden.

Dette går ikke:
<h4>
<% Response.write "HEJ" %>
</h4>


Men dette går:
<%
Response.write "<h4>"
Response.write "HEJ"
Response.write "</h4>"
%>
Avatar billede donslund Nybegynder
28. juni 2003 - 18:38 #21
Ja, det kan jeg se. Det er fint. Det har løst det problem, men givet et andet, men det kigger jeg lige på.
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