Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQuery][JSON]Controller,czyli czym to się je.
Fifi209
post
Post #1





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Jako, iż chciałem dodać kilka fajnych "bajerów" tak postanowiłem, iż javascript będzie niezbędny do poprawnego działania strony, więc na początek odciąłem tych, użytkowników, którzy nie mają włączonej obsługi javascript. Postanowiłem, że wszystkie dane będę pobierał po prostu w JSON z serwera PHP.

Tak więc napisałem funkcję:
[JAVASCRIPT] pobierz, plaintext
  1. function load(name) {
  2. $.getJSON('/' + name + '/',
  3. function (data) {
  4. if (data.error) {
  5. $("#main").html('<h2>Error!</h2><p>' + data.error.text + '</p>');
  6. return false;
  7. }else{
  8. return data;
  9. }
  10. }
  11. );
  12. }
[JAVASCRIPT] pobierz, plaintext


W PHP prosty kontroler:
  1. <?php
  2.  
  3.  
  4. if (!empty($_GET['action'])) {
  5. if (file_exists('actions/'.$_GET['action'].'.php')) {
  6. include('actions/'.$_GET['action'].'.php');
  7. }else{
  8. echo '{"error": {"text": "Taka strona nie istnieje!"}}';
  9. }
  10. }else{
  11. echo '{"error": {"text": "Brak argumentu!"}}';
  12. }
  13.  
  14. ?>


No i .htaccess:
Kod
RewriteEngine On
RewriteRule ^([a-z]+)/$ controller.php?action=$1 [L]


Przy wejściu na stronę domyślnie ładuje się news.php. Mój problem polega na tym, dane będą bardzo różne np. raz potrzebuję wyświetlić news'y, raz komunikat, raz tabelę. Musiałbym dla każdego przypadku pisać oddzielną funkcję, która to obsłuży... Jednak czy istnieje jakaś możliwość napisania w miarę uniwersalnej funkcji, która pobierając dane JSON, odczytywałaby kilka wartości i dzięki nim odpowiednio wyświetliła dane. Przykładowo jeżeli to są newsy to w json przesyłam tablicę:

Kod
{"news": [
{"id": 1, "author": "fifi209", "subject": "temacik", "content": "tresc"},
{"id": 2, "author": "fifi209", "subject": "temacik2", "content": "tresc2"}
]}


I teraz musiałbym wysłać jakieś dane do funkcji, aby wiedziała co z nimi zrobić...
np. funkcja musi wiedzieć, że 1 element tablicy to 1 div a w nim np. subject jest przyporządkowany do tagu html: <h2>, a content do tagu html: <p>

Mam nadzieję, że dobrze opisałem to co chcę zrobić. Z chęcią przyjmę również inne koncepcje.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Możesz w tym json dodać pole callback, z nazwą funkcji, która ma tą odpowiedź odpowiednio przetworzyć. Następnie w js po pobraniu json'a wybierasz te pole, wywołujesz funkcję przekazując do niej resztę odpowiedzi jako argument.
Go to the top of the page
+Quote Post
Fifi209
post
Post #3





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Jakbym chciał robić tyle funkcji to bym nie założył tego tematu. Chodzi mi, aby zrobić jakąś uniwersalną.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 22:25