A ampy Medlem sedan feb. 2001 1 498 inlägg Trådstart 26 aug. 2001 15:21 #1 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>
@nders Medlem sedan juni 2000 32 967 inlägg allra högst upp i asp-filen:
response.buffer=true
mvh,
A ampy Medlem sedan feb. 2001 1 498 inlägg det funkar fortfarande inte
@nders Medlem sedan juni 2000 32 967 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?
A ampy Medlem sedan feb. 2001 1 498 inlägg jag hade inte gjort det innan men nu testade jag men det funkar fortfarande inte
A ampy Medlem sedan feb. 2001 1 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.
@nders Medlem sedan juni 2000 32 967 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.
A ampy Medlem sedan feb. 2001 1 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...
@nders Medlem sedan juni 2000 32 967 inlägg hur ser hela ditt asp-dokument ut, med response.buffer-raden, och response.redirect-raden?
@nders Medlem sedan juni 2000 32 967 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,
A ampy Medlem sedan feb. 2001 1 498 inlägg JAG MENAR VILKEN FIL JAG SKA KOPIERA?
W webzonen Medlem sedan feb. 2001 390 inlägg Skikca in koden på hela den felande sidan.
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.
@nders Medlem sedan juni 2000 32 967 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.
mikul Medlem sedan aug. 2001 3 824 inlägg alltså skriv så här längst upp...
<% Response.Buffer = True %>
E Eclipse Medlem sedan juli 2000 3 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"
%>
B Bengan Medlem sedan juni 2000 690 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.