Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][AJAX] Fragment (#)
Chys
post
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 12.04.2007

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


Witam, planuję zrobić bogatą stronę z użyciem Ajax'a i oczywiście php.
Pomyślałem, że każdy link mógłby być obsługiwany przez Ajax'a: chodzi o to, żeby w ogóle nie zachodziło odświeżanie strony.
Jak wiadomo, aby kliknięcie linku nie wywołało przeładowania strony, musi mieć to samo zapytanie co obecne i jakis fragment (#) określający id jakiegoś elementu na stronie. I zapytanie mające na celu wyświetlenie newsa miało by taką postać: ?newsid=15
Używając Ajax'a, fragment miałby postać #newsid=15.
I teraz jest problem: ktoś chciałby przesłać znajomemu link z owym newsem, a byłby on taki: http://www.exemple.com#newsid=15 co naturalnie nie wyświetli newsa o id 15, tylko stronę główną. Pytanie brzmi: czy i jeśli tak, to jak, serwer www może rozpoznać fragment URI, i przekierować z np: http://www.exemple.com#newsid=15 na normalny adres z zapytaniem http://www.exemple.com?newsid=15 ?
Z góry dziękuję za pomoc.
Go to the top of the page
+Quote Post
rolnix
post
Post #2





Grupa: Zarejestrowani
Postów: 115
Pomógł: 0
Dołączył: 16.04.2005
Skąd: Białowieża

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


Chyba musisz użyc innego znaku... bo w URLu wysyłanym od przeglądarki do serwera nie ma nawet tego "#", służy to tylko przeglądarce do poruszania się po już przysłanej stronie winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
Chys
post
Post #3





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 12.04.2007

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


No to jest jakiś inny sposób na generowanie dynamicznej treści Javascript'em i Ajax'em, żeby można to było później komuś przesłać w postaci linku?
Go to the top of the page
+Quote Post
rolnix
post
Post #4





Grupa: Zarejestrowani
Postów: 115
Pomógł: 0
Dołączył: 16.04.2005
Skąd: Białowieża

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


Odsyłam do mod_rewrite.


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





Grupa: Zarejestrowani
Postów: 398
Pomógł: 10
Dołączył: 24.11.2004
Skąd: Łódź

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


Zrob normalna strone, z normalnymi linkami. Jak juz wszystko bedzie dzialac to wtedy na linki zaloz sobie na przyklad onclick="return wczytajNews (15)", a funkcja wczytajNews bedzie zwracala false przez co link bedzie nieaktywny.
W ten sposob robisz strone przyjazna dla crawlerow i jednoczesnie "on top of that" dajesz ajaxowe bajerki dla uzytkownikow.


--------------------
Go to the top of the page
+Quote Post
Chys
post
Post #6





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 12.04.2007

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


Dzięki za mod_rewrite, ale mi nie działa sad.gif
Jak mam się dowiedzieć, czy mój apache to obsługuje?
Robię dokładnie tak, jak na home.pl jest to opisane, w katalogu głównym serwera umieściłem plik index.php zawierający:
  1. <?php
  2. echo $_GET['id'];
  3. ?>

oraz w tym samym katalogu plik .htaccess:
Cytat
RewriteEngine on
RewriteRule id/([a-zA-Z0-9]) index.php?id=$1

Teraz po wpisaniu adresu, np http://127.0.0.1/?id=abcd123 otrzymuję oczywiście stronę z treścią abcd123, jednak po wpisaniu http://127.0.0.1/id/abcd123 otrzymuję komunikat o błędzie, jakby serwer szukał domyślnego pliku w folderze id/abcd123, czy ktoś pomoże co robię źle?
Go to the top of the page
+Quote Post
rolnix
post
Post #7





Grupa: Zarejestrowani
Postów: 115
Pomógł: 0
Dołączył: 16.04.2005
Skąd: Białowieża

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


A w httpd.conf włączyłeś ten moduł?


--------------------
Go to the top of the page
+Quote Post
Chys
post
Post #8





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 12.04.2007

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


No teraz usunąłem znak komentarza w httpd.config, jednak przy restarcie apache jest komunikat o błędzie, że moduł mod_rewrite nie znajduje się na liście załadowanych modułów... Oznacza to, że go po prostu nie ma na moim apach'u ?
Go to the top of the page
+Quote Post
rolnix
post
Post #9





Grupa: Zarejestrowani
Postów: 115
Pomógł: 0
Dołączył: 16.04.2005
Skąd: Białowieża

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


Wrzuć odpowiedni plik dll/so (zależy, czy win32/linux) do katalogu z bibliotekami apache'a i wtedy spróbuj.


--------------------
Go to the top of the page
+Quote Post
Chys
post
Post #10





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 12.04.2007

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


A skąd mogę wziąć mod_rewrite.dll? Szukam ciągle w google, ale jakoś znaleźć nie mogę blinksmiley.gif
Go to the top of the page
+Quote Post
drPayton
post
Post #11





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

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


.dll? Eeee, ja na windzie mam .so winksmiley.jpg Jeśli Ci to nie działa, to zobacz jeszcze, czy masz taki fragment:
Kod
#
# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives.  See also the AllowOverride
# directive.
#
AccessFileName .htaccess

i taki:
Kod
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride All
Go to the top of the page
+Quote Post
domis86
post
Post #12





Grupa: Zarejestrowani
Postów: 255
Pomógł: 5
Dołączył: 20.03.2007
Skąd: Kraków

Ostrzeżenie: (30%)
XX---


to co chcesz zrobic to "degradable AJAX" + "HIJAX"
polecam:

http://particletree.com/features/the-hows-...egradable-ajax/
http://www.softwaredeveloper.com/features/...ay-nice-061907/

to bardzo ładne i nowoczesne podejscie do tworzenia aplikacji internetowych smile.gif

Ten post edytował domis86 6.11.2007, 13:24:33
Go to the top of the page
+Quote Post
Chys
post
Post #13





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 12.04.2007

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


drPayton, pomogło, dzięki smile.gif
domis86, jako że to jest po angielsku, a że mój angielski jest jaki jest... To idzie mi to powoli, ale postaram się całe artykuły przeczytać winksmiley.jpg
I mam teraz tylko ostatnie pytanie dotyczące również pierwszego pytania w pierwszym poście; otóż wracając do problemu przesłania koledze linka, fraza w .httaccess:
Kod
RewriteRule \#([0-9a-zA-Z=&]+) index.php?$1

oczywiście nie działa, bo # jest znakiem komentarza, nieprawdaż?
Podstawienie jakiegokolwiek innego znaku, np !
Kod
RewriteRule \!([0-9a-zA-Z=&]+) index.php?$1

da pożądany efekt; zapytanie http://127.0.0.1/!id=news&newsid=154 będzie oznaczało to samo co http://127.0.0.1/?id=news&newsid=154
Tylko jak to połączyć ze znakiem "#", bo przecież inaczej nie mogę zmieniać adresu URI po stronie przeglądarki bez przeładowania strony?
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:40