Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Problem z odświeżaniem strony przy zastosowaniu niceurl
Jarod
post
Post #1





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


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>


Ten post edytował Jarod 25.03.2008, 01:04:39


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
koodlaty
post
Post #2





Grupa: Zarejestrowani
Postów: 118
Pomógł: 3
Dołączył: 6.07.2006
Skąd: Dublin

Ostrzeżenie: (0%)
-----


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.


--------------------
-----------------------
My hovercraft is full of eels!
Go to the top of the page
+Quote Post
Jarod
post
Post #3





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


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?


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Jarod
post
Post #5





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


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.


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Jarod
post
Post #7





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


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


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 06:01