Avatar billede plaf Nybegynder
11. august 2002 - 13:23 Der er 12 kommentarer og
3 løsninger

Response.Redirect - headerfejl

Det plejer da at virke, men nu får jeg denne fejl:



Response-objekt fejl 'ASP 0156 : 80004005'

Headerfejl

/tidergenerelt_slet.asp, linje 6

HTTP-headerne skrives allerede til klientbrowseren. Ændringer af HTTP-headers skal foretages, inden sideindholdet skrives.



Koden ser sådan her ud:

<!--#include file="sidehovedadm.asp"-->
    <td class="menu" width="130" valign="top"> <!--#include file="menu.asp"--> </td>
    <td class="indhold" width="620">
<%sql = "DELETE FROM booktider WHERE ID= " & Request("ID")
Conn.Execute (sql)
Response.Redirect("tider.asp")
%>

<!--#include file="sidefod.asp"-->


Hvorfor får jeg pludselig fejl?
Avatar billede rudi1234 Nybegynder
11. august 2002 - 13:26 #1
Du må ikke redirecte efter at der er skrevet html-kode
Avatar billede plaf Nybegynder
11. august 2002 - 13:27 #2
Hvorfor ikke det? - det plejer da at virke, synes jeg...
Avatar billede rudi1234 Nybegynder
11. august 2002 - 13:28 #3
Det lyder underligt, for man må hverken redirecte elller skrive til cookies efter at der er skrevet html-kode
Avatar billede plaf Nybegynder
11. august 2002 - 13:35 #4
Jamen, det HAR nu virket! - det hjalp nu at fjerne html'en - så skriv et svar, så får ud point!
Avatar billede thesurfer Nybegynder
11. august 2002 - 13:41 #5
hmm... det ser da mærkeligt ud, det der kode..

du har en include lige efter begynder du på et <td> ? hvad skete der med <table>?

husk du kan ikke include efter at have skrevet hverken asp eller html kode.. include bliver udført først (før asp).. og langt før html..

/theSurfer.
Avatar billede thesurfer Nybegynder
11. august 2002 - 13:41 #6
"include lige efter" = "include og lige efter" ("og")

:)
Avatar billede goose Nybegynder
11. august 2002 - 13:51 #7
Indsæt følgende som det første på din side:
<%
response.buffer = true
%>

/Goose
Avatar billede plaf Nybegynder
11. august 2002 - 13:52 #8
Hvad gør den der "response.buffer = true?
Avatar billede thesurfer Nybegynder
11. august 2002 - 13:58 #9
den "laver" hele siden før den sendes til klienten/browseren/brugeren..

/theSurfer.
Avatar billede plaf Nybegynder
11. august 2002 - 14:03 #10
Hjælper det på min redirct-funktion, hvis der er html-kode før response-funktionen?
Avatar billede thesurfer Nybegynder
11. august 2002 - 14:06 #11
det ved jeg ikke.. men du kan da prøve det, og så kan du fortælle os om det virker eller ej :)

/theSurfer.
Avatar billede rune_c Nybegynder
11. august 2002 - 14:18 #12
hvis du ikke har bufferen på sendes dataene lige efter de bliver behandlet. Hvis der så er nogle HTML headers før dine redirect bliver de sendt og derefter vil du skifte side og det kan man ikke. Dvs enten skal bufferen slået til ellers skal dine redirects kommer FØR alt html kode og response.writes
Avatar billede scope Nybegynder
11. august 2002 - 14:24 #13
En workaround kan være at bruge javascript.. Altså skrive et script istedet for redirecten..
eks.:
<!--#include file="sidehovedadm.asp"-->
    <td class="menu" width="130" valign="top"> <!--#include file="menu.asp"--> </td>
    <td class="indhold" width="620">
<%sql = "DELETE FROM booktider WHERE ID= " & Request("ID")
Conn.Execute (sql)
%>
<!--#include file="sidefod.asp"-->
<script language="JavaScript" type="text/javascript">
    document.location.href = 'tider.asp';
</script>

Og lige en kommentar til thesurfer.. Selvfølgelig kan det være smart at sætte en include ind lige før en td hvis det der står i includen gør det ud for toppen af tabellen..

Det der undrer mig er at man udskriver html på en side hvor man blot sletter data og redirecter.. Der er jo ingen der ser siden alligevel, da man bliver redirected..
Jeg ville nok lave den sådan her:
<%
  sql = "DELETE FROM booktider WHERE ID= " & Request("ID")
  Conn.Execute (sql)
  Response.Redirect("tider.asp")
%>
Avatar billede scope Nybegynder
11. august 2002 - 14:28 #14
BTW et lille trick iforhold til performance er også at bestemme sin request..

Altså så den enten bliver til request.form("ID") eller request.querystring("ID") alt efter hvor den kommer fra..

Så skal serveren ikke selv til at finde ud af det.. Det betyder måske ikke så meget lige i dette tilfælde, men det er en god vane..

- scopas
Avatar billede plaf Nybegynder
11. august 2002 - 14:47 #15
Tak for alle svarene - jeg er blevet klogere!
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