ampyMedlem sedan feb. 20011 498 inlägg Jag har laddat ner ett forum från sidan ricki.nu.
När man ska skriva ett meddelande och sedan ska "posta" det kommer detta felmeddelande fram:
Response-objekt fel 'ASP 0156 : 80004005'
Fel på huvuden
/forum/post.asp, rad 32
HTTP-huvudena har redan skrivits till klientläsaren. Ändringar till HTTP-huvudena måste göras innan sidinnehållet skrivs.
Och så här ser hela post.asp ut:
<!--#include file="settings.inc"-->
<html>
<head>
<title>Forum v1.0</title>
</head>
<body bgcolor="<%=bgcolor%>">
\<%
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Driver={Microsoft Access Driver (\*.mdb)}; DBQ=" & Server.MapPath("forum.mdb") & ";pwd=;"
Subject = Request.Form("subject")
Body = Request.Form("body")
DateTime = Now
By = Request.Form("namn")
ByEmail = Request.Form("epost")
Children = Request.Querystring("answer")
Answers = 0
SQL="INSERT INTO forum (\[Children\], \[Subject\], \[Body\], \[DateTime\], \[By\], \[ByEmail\], \[Answers\]) VALUES(" & Children & ", '" & Subject & "', '" & Body & "', #" & DateTime & "#, '" & By & "', '" & ByEmail & "', " & Answers & ")"
Connection.Execute(SQL)
If Children\<\>0 Then
PARENT="UPDATE forum SET Answers=Answers+1 WHERE Parent=" & Children
Connection.Execute(PARENT)
End If
Connection.Close
Response.Redirect "default.asp"
%\>
</body>
</html>
@ndersMedlem sedan juni 200032 969 inlägg allra högst upp i asp-filen:
response.buffer=true
mvh,
------------------
mördar-anders, det är jag.
ampyMedlem sedan feb. 20011 498 inlägg det funkar fortfarande inte
@ndersMedlem sedan juni 200032 969 inlägg kodraden måste ligga som den första rad som exeveras, dvs direkt under ev. <%@-tagg.
är det där du lagt den?
------------------
mördar-anders, det är jag.
ampyMedlem sedan feb. 20011 498 inlägg jag hade inte gjort det innan men nu testade jag men det funkar fortfarande inte :(
ampyMedlem sedan feb. 20011 498 inlägg jag kom på en sak.
När jag laddade om själva forumstartsidan (default.asp) fanns meddelanderna där. Det funkar men det kommer alltså upp ett felmeddelande.
@ndersMedlem sedan juni 200032 969 inlägg jodå. vilken rad är det fel på?
den med response.redirect skulle jag tippa på.
borde helt klart funkalera med response.buffer=true högst upp.
------------------
mördar-anders, det är jag.
ampyMedlem sedan feb. 20011 498 inlägg jag testade att ta bort Response.Redirect "default.asp".
Då kom bara en vit sida upp så det måste vara något fel på den raden...
@ndersMedlem sedan juni 200032 969 inlägg hur ser hela ditt asp-dokument ut, med response.buffer-raden, och response.redirect-raden?
------------------
mördar-anders, det är jag.
@ndersMedlem sedan juni 200032 969 inlägg i din editor, notepad eller vilken du nu använder, markera all text. kopiera. klistra in här.
annars kan du ersätta (when all else fails):
Response.Redirect "default.asp"
med
Response.Write "<scr" & "ipt>location.href='default.asp';</scr" & "ipt>"
mvh,
------------------
mördar-anders, det är jag.
ampyMedlem sedan feb. 20011 498 inlägg JAG MENAR VILKEN FIL JAG SKA KOPIERA?
webzonenMedlem sedan feb. 2001390 inlägg Skikca in koden på hela den felande sidan.
------------------
En sak livet lärt mig är att idioterna oftast har rätt
Men!!
Response.redirect funkar inte om sidhuvudena redan skrivits! Detta innebär att du inte får lägga in <html> eller <!DOCTYPE>taggar ovanför en redirect-rad! Flytta bara upp scriptet till överst på sidan.
response.buffer=true skriver man överst på filen när man ska jobba med cookies, btw.
------------------
:[Scarabus]:
Fudge Entertainment
@ndersMedlem sedan juni 200032 969 inlägg
response.buffer=true skriver man överst på filen när man ska jobba med cookies, btw.
eller när man vill kunna göra en redirect var som helst i koden. det gör nämligen så att asp-tolken buffrar hela sidan tills den är färdigexekverad och skickar sedan hela faderullan till browsern. så länge ingenting är skickat till läsaren så kan man modifiera http-headers, dvs, redirects, cookies, ändra contenttype, m.m.
------------------
mördar-anders, det är jag.
mikulMedlem sedan aug. 20013 824 inlägg alltså skriv så här längst upp...
<% Response.Buffer = True %>
------------------
vad är det för fel mad att vara lat?, tänk om det blev krig och ingen kom dit.
EclipseMedlem sedan juli 20003 825 inlägg Koden ovan är fel.
Ta bort ALL html kod från sidan så fungerar det. Drt är det som är HTTP-huvudet, liksom!
<!--#include file="settings.inc"-->
<%
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("forum.mdb") & ";pwd=;"
Subject = Request.Form("subject")
Body = Request.Form("body")
DateTime = Now
By = Request.Form("namn")
ByEmail = Request.Form("epost")
Children = Request.Querystring("answer")
Answers = 0
SQL="INSERT INTO forum ([Children], [Subject], [Body], [DateTime], [By], [ByEmail], [Answers]) VALUES(" & Children & ", '" & Subject & "', '" & Body & "', #" & DateTime & "#, '" & By & "', '" & ByEmail & "', " & Answers & ")"
Connection.Execute(SQL)
If Children<>0 Then
PARENT="UPDATE forum SET Answers=Answers+1 WHERE Parent=" & Children
Connection.Execute(PARENT)
End If
Connection.Close
Response.Redirect "default.asp"
%>
BenganMedlem sedan juni 2000690 inlägg
Koden ovan är fel.
Ta bort ALL html kod från sidan så fungerar det. Drt är det som är HTTP-huvudet, liksom!
Ursäkta men är ovan ett skämt? :)
Lyssna på @nders mfl. lägg in
<% Response.Buffer = True %>
högst upp på sidan precis under ev rad med ett @ tecken i så fixar det sig. Sen kan du köra kod var du vill i filen inklusive redirect, addheader osv.
På IIS5 är Response.Buffer = True dock standard så då slipper man bry sig.
------------------
MvH
/Bengan
www.bengan.com | Brossans Räjser
"Better to be hated for who you are than loved for who you're not."