Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Problem z odświeżaniem strony przy zastosowaniu niceurl
Forum PHP.pl > Forum > Przedszkole
Jarod
W swojej aplikacji zastosowałem wzorzec MVC i niceurl. Edytowałem całkowicie tego posta, bo być może niezbyt jasno to wszystko opisałem.

Miałem problem z IE i myślałem, że go rozwiązałem. Ale powrócił :/ Do rzeczy. Mam aplikację, która wyświetla jakieś dane wierszami, np:

Cytat
Tytuł | Imię | Nazwisko| data publikacji | ...| i jeszcze inne rzeczy
Tytuł | Imię | Nazwisko| data publikacji | ...| i jeszcze inne rzeczy
Tytuł | Imię | Nazwisko| data publikacji | ...| i jeszcze inne rzeczy
Tytuł | Imię | Nazwisko| data publikacji | ...| i jeszcze inne rzeczy
Tytuł | Imię | Nazwisko| data publikacji | ...| i jeszcze inne rzeczy
(...)

Tytuł jest linkiem do edycji. Na stronie jest tego dużo. Zawartość tej strony musi się odświeżać co 30sekund. To nie problem ale.. po automatycznym odświeżeniu przeglądarka powinna ustawić się w miejscu gdzie użytkownik znajdował się przed odświeżeniem. Opera robi to automatycznie ale nie FF i nie IE.
Rozwiązanie wydaje się banalnie proste - zastosować kotwice. Czyli do każdego tytułu (linka dodajemy wygenerowaną kotwicę) - np:
keeper1
keeper2
keeper3
itd..

A w znaczniku meta wywołujemy adres strony z tą kotwicą. Działa.

Zastosowałem niceUrle i problem z IE jest następujący. IE olewa kotwice - jeśli w adresie pojawia się znak # to strona odświeża się tylko 1 raz a potem ignoruję <meta>.

Adres wygląda mniej więcej tak:
Kod
http://localhost/Application/NazwaAplikacji/main/pl/NazwaAkcji/parametr1/wartosc1/parametr2/wartosc2/#keeper30

a znacznik <meta> ustawiam tak:
  1. <?php
  2. (...)
  3. $sParameter = explode('/', $_SERVER['PATH_INFO']);
  4.  
  5. if (isset($sParameter[5]))
  6. {
  7. echo '<meta http-equiv="Refresh" content="30; URL=http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . '#keeper' . $sParameter[5] . '" />';
  8. }
  9. else
  10. {
  11. echo '<meta http-equiv="Refresh" content="45; URL=http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . '" />';
  12. }
  13.  
  14. (...)
  15. ?>



Dziaisja sprawdzałem i pod IE7 jest to samo.

Macie jakieś pomysły?




---------
EDIT:

Nikt z Was nie pisał aplikacji, która powinna odświeżać dane co jakiś czas i ustawiać się na pozycji, w której użytkownik przeglądał stronę przed odświeżeniem?




--------
EDIT2:

Prosty przykład, że jak IE napotka znak # w adresie to przestaje działać prawidłowo.

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <meta http-equiv="Content-Language" content="pl" />
  6. <meta name="Robots" content="all" />
  7. <meta name="Pragma" content="no-cache" />
  8. <meta name="Cache-Control" content="no-store, no-cache, must-revalidate" />
  9. <?php echo '<meta http-equiv="Refresh" content="10; URL=http://localhost/X/index.php?#keep30" />'; ?>
  10.  
  11. <title>Testy...</title>
  12. </head>
  13. <body>
  14. <?php
  15. for ($i=0; $i<1000; $i++)
  16. {
  17. echo 'Test ' . $i . '<br />';
  18. }
  19. ?>
  20. </body>
  21. </html>
koodlaty
Cytat(Jarod @ 25.03.2008, 01:04:46 ) *
Nikt z Was nie pisał aplikacji, która powinna odświeżać dane co jakiś czas i ustawiać się na pozycji, w której użytkownik przeglądał stronę przed odświeżeniem?

Pisał, pisał ale stwierdził, że wygodniejszym, nowocześniejszym – bardziej elastycznym sposobem będą zapytania asynchroniczne – śmiga.
Jarod
Cytat(koodlaty @ 25.03.2008, 07:53:55 ) *
Pisał, pisał ale stwierdził, że wygodniejszym, nowocześniejszym – bardziej elastycznym sposobem będą zapytania asynchroniczne – śmiga.


Kiedyś ajaxa nie było. Jak sobie radziliście?
nospor
Cytat
Kiedyś ajaxa nie było. Jak sobie radziliście?
Kiedys nie bylo tez php, no ale nie popadajmy w paranoje winksmiley.jpg

Do tematu: uzyj header(). w manualu znajdziesz przyklady jak tam dac refresh
Jarod
Cytat(nospor @ 25.03.2008, 12:17:46 ) *
Kiedys nie bylo tez php, no ale nie popadajmy w paranoje winksmiley.jpg

nospor wiesz, równie dobrze mógłbym olać IE, bo w FF i Operze wszystko działa. Ale nie o to chodzi. Tłumaczenie, że kiedyś nie było php nie ma sensu. Ale wybieranie ajaxa tylko dlatego, żeby rozwiązać problem z IE...


Cytat(nospor @ 25.03.2008, 12:17:46 ) *
Do tematu: uzyj header(). w manualu znajdziesz przyklady jak tam dac refresh

Nie mam problemu z odświeżaniem, tylko z odświeżaniem przy zastosowaniu w adresie kotwicy.
nospor
Cytat
Nie mam problemu z odświeżaniem, tylko z odświeżaniem przy zastosowaniu w adresie kotwicy.
Dlatego zaproponowalem bys moze uzyl header(). Wowczas moze z kotwicą pojdzie. Nie wiem nie sprawdzalem.

edit down: o header wczesniej nic nie pisales tongue.gif
Jarod
Cytat(nospor @ 25.03.2008, 13:50:20 ) *
Dlatego zaproponowalem bys moze uzyl header(). Wowczas moze z kotwicą pojdzie. Nie wiem nie sprawdzalem.

Dlatego napisałem, że to nie jest problem z odświeżaniem. Z header() także sprawdzałem.


A możecie przynajmniej powiedzieć czy u Was w IE też nie odświeża, jeśli zastosujecie

  1. <meta http-equiv="Refresh" content="2; url=http://localhost/index.php?param1=value&#keeper10" />


i czy odświeża jeśli zastosujecie
  1. <meta http-equiv="Refresh" content="2; url=http://localhost/index.php?param1=value&keeper10" />

?

Może to u mnie coś nie tak z przeglądarką. Ale wątpię...

Jednak miałem racje. IE jest głupie smile.gif

http://forums.devshed.com/php-development-...ags-514586.html


Problem rozwiązałem bez stosowania JS. Kotwice działają przy auto odświeżaniu tylko wtedy, gdy adres użyty w meta różni się. Wystarczy wygenerować unikalny numerek (rand()) i dodawać jako parametr do url. Wtedy IE działa prawidłowo.

pzdr
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.