beh nel momento in cui tu fai un redirect invii un header al server e lo devi fare prima di aver inviato qualsiasi altro output prima! fai attenzione che output è intesa anche una riga vuota prima dell'apertura del php.

in asp non so come funziona. In js è un altro discorso perché è lato-client, idem con html.

Quindi, come ho detto prima, hai diversi modi per risolvere:
o metti un ob_start() - vedi il manuale per la descrizione - all'inizio del tuo script e poi usi l'header dove ti pare
o lo fai con js
o lo fai con html