[PHP][AJAX] Struktura po stronie serwera. |
[PHP][AJAX] Struktura po stronie serwera. |
4.09.2011, 12:59:52
Post
#1
|
|
Grupa: Zarejestrowani Postów: 450 Pomógł: 135 Dołączył: 18.11.2010 Skąd: Wschowa Ostrzeżenie: (0%) |
Witam.
Chciałbym zapytać o wasze doświadczenia przy obsłudze żądań AJAX po stronie skryptu PHP. Przy projektach używałem dwóch sposobów: Sposób 1. Skrypt JS obsługując różne zdarzenia wysyła żądania postem do np. ajaxFunctions.php w podanej formie: { funkcja: 1, dane: data } { funkcja: 2, dane: data } Strona php:
Sposób 2. Każde zdarzenie jest obsługiwane przez oddzielny skrypt php na serwerze. Chyba nie potrzeba więcej wyjaśnień tutaj. Oba sposoby wykorzystywałem i nie jestem z nich w 100% zadowolony. Domyślam się, że jeszcze można by pójść w stronę OOP. Macie jakieś własne sposoby implementacji ? Dzięki. Pozdro. -------------------- “ Computers are good at following instructions, but not at reading your mind. ” - Donald Knuth |
|
|
4.09.2011, 20:34:21
Post
#2
|
|
Grupa: Zarejestrowani Postów: 664 Pomógł: 169 Dołączył: 8.01.2010 Skąd: Kraków Ostrzeżenie: (0%) |
Cytat Domyślam się, że jeszcze można by pójść w stronę OOP. Dobrze się domyślasz:) Abstrahując jednak od tego, to dla każdego zapytania AJAXowego powinien być inny adres url np. edycja profilu -> my_page.com/profile/edit wyświetlanie listy zadań -> my_page.com/task_list Czyli ta twoja funkcja ze sposobu pierwszego powinna być określona za pomocą url'a, natomiast pozostałe dane get'em lub post'em. Często można spotkać doklejanie id do url'a, czyli jeżeli jestem użytkownikiem o id = 2, to link do edycji profilu wyglądałby tak: my_page.com/profile/edit/2 Koniec końców raczej stosuj drugi sposób niż pierwszy:) W taki sposób łatwiej, a przede wszystkim czytelniej:) jest kontrolować uprawnienia użytkowników. -------------------- |
|
|
4.09.2011, 20:38:34
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) |
a ja to robie tak (zend framework):
1. używam zend_layout domyślnie w aplikacjach. sama akcja zwraca tylko środek. 2. napisałem plugin, który w przypadku jeśli mamy zapytanie ajaxowe wyłącza layout tym sposobem mam wymieszane wszystkie akcje ajaxowe oraz nei ajaxowe w controlerach (oczywiscie dobre nazewnictwo jest jak najbardziej wskazane). fajne w tym jest to, że jeśli chcę przeładować ajaxem "centrum" aplikacji, to request z marszu zwróci mi tylko środek, a jak wywołam ten sam odnośnik w nowym oknie, to doklei layout i wszystko będzie działało odpowiednio. |
|
|
4.09.2011, 21:02:07
Post
#4
|
|
Grupa: Zarejestrowani Postów: 664 Pomógł: 169 Dołączył: 8.01.2010 Skąd: Kraków Ostrzeżenie: (0%) |
Cytat fajne w tym jest to, że jeśli chcę przeładować ajaxem "centrum" aplikacji, to request z marszu zwróci mi tylko środek, a jak wywołam ten sam odnośnik w nowym oknie, to doklei layout i wszystko będzie działało odpowiednio. Nie wydaje mi się, żeby coś takiego było potrzebnym zabiegiem. W końcu wiesz, które akcje mają być responsem ajaxowym, a które nie, więc po co dodatkowo to sprawdzanie robić po stronie serwera? Jeżeli użytkownik wpisze ajaxowy url z palca to dlaczego otaczać to dodatkowo layoutem? Taka akcja nie jest pożądana, więc dlaczego nie wypluć po prostu czystego responsa? Cytat tym sposobem mam wymieszane wszystkie akcje ajaxowe oraz nei ajaxowe w controlerach Dobrze prawi:) Logika jest ważniejsza niż typ żądania. -------------------- |
|
|
4.09.2011, 21:34:36
Post
#5
|
|
Grupa: Przyjaciele php.pl Postów: 1 224 Pomógł: 40 Dołączył: 6.07.2004 Skąd: Wuppertal Ostrzeżenie: (0%) |
Cytat Nie wydaje mi się, żeby coś takiego było potrzebnym zabiegiem. W końcu wiesz, które akcje mają być responsem ajaxowym, a które nie, więc po co dodatkowo to sprawdzanie robić po stronie serwera? Jeżeli użytkownik wpisze ajaxowy url z palca to dlaczego otaczać to dodatkowo layoutem? Taka akcja nie jest pożądana, więc dlaczego nie wypluć po prostu czystego responsa? u mnie jest to skonstruowane w ten sposób: Kod <a href="url_do_akcji" class="ajaxlink">link</a> no i jak mam cos takigo to sobie javascriptem linki z klasą ajaxlink obsługuję do jakiegoś głównego diva. a jesli ktoś nie ma akurat javascriptu włączonego, to i tak całość zadziała normalnie, tyle że z przeładowaniem strony (i dla google też zadziała). |
|
|
5.09.2011, 00:51:09
Post
#6
|
|
Grupa: Zarejestrowani Postów: 450 Pomógł: 135 Dołączył: 18.11.2010 Skąd: Wschowa Ostrzeżenie: (0%) |
Na "ifach" robiłem ajaxowy chat online z konsultantem.
Rodzajów zapytań było wiele i w obrębie tego jednego modułu więc zrobiłem w ten sposób. Świetne rozwiązanie ActivePlayer Dzięki za wypowiedzi. -------------------- “ Computers are good at following instructions, but not at reading your mind. ” - Donald Knuth |
|
|
Wersja Lo-Fi | Aktualny czas: 10.06.2024 - 11:40 |