Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]&[js] automatyczne przekierowanie
Forum PHP.pl > Forum > Przedszkole
Wieviór
Używam czegoś takiego by automatycznie przekierowywać albo odświeżać stronę:

  1. <?
  2. echo '...';
  3. ?><script>setTimeout('document.location = "strona.php"', 1000);</script><?
  4. echo '...';
  5. ?>


No i niby pięknie, bo działa zupełnie poprawnie i uzyskuję to co chcę, ale chciałbym pozbyć się tego wychodzenia i wchodzenia w php z pomocą <? i ?>.
Chodzi głównie o estetykę kodu, probowałem wstawić ten <script> w echo, tyle że przy tym pierwszym pojedynczym cudzysłowie gubi się PHP, natomiast jeśli tam wstawię podwójny, to JS się nie podoba. :/
Cysiaczek
Escape'uj cudzysłowia, lub apostrofy.
  1. <?php
  2. print "<script>setTimeout('document.location = \"strona.php\"', 1000);</script>";
  3. ?>


Pozdrawiam.
Wieviór
Kiedyś już probowałem Escape'ować, ale wtedy probowałem apostrofy i nie wychodziło. Nie pomyślałem o robieniu echo "": zamiast echo '';

Sprytnie. Wielkie dzięki! ;]

EDIT: Sprawdziłem teraz i udało mi się z echo '';. Musiałem coś źle robić wtedy. Dzięki jeszcze raz ;]
Cysiaczek
Escape'uje się zawsze te znaczki, którymi otoczona jest konstrukcja echo lub print. Jeśli masz print " to escapujesz ", jeśli masz apostrofy, to escapujesz apostrofy. snitch.gif
qqrq
A nie lepiej to zrobić TAK? Jeśli ktoś sobie w przeglądarce wyłączy JS, to strona nie będzie się odświeżać, a tak zawsze.
Wieviór
@qqrq: Na pewno lepiej, ale nie w moim przypadku, przeładowuję w środku strony i nie chcę się bawić w odwoływanie się do <head></head> ;]
qqrq
Wieviór => Tzn. Twój kod JS ma być wywoływany wraz z jakimś zdarzeniem? Co to znaczy "w środu strony"? Masz dużo includowanych plików i nie chce Ci się szukać w index'ie i robić warunków? smile.gif
Wieviór
Robię to przekierowanie przy logowaniu, czyli tak - z jakimś zdarzeniem, odwoływać się do head mi się po prostu nie chce biggrin.gif
bmL
Nie jest to zgodne z żadnymi standardami ale przekierowanie <meta> możesz umieścić w każdym miejscu na stronie.
Ale moim zdaniem najlepszy sposób to buforowanie ob_start() + ob_end_flush() + header(Location:....).
Gość
Zrób tak
<?

echo "<script>setTimeout('document.location = \"strona.php\"', 1000);</script>";

?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.