Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery][JSON]Controller,czyli czym to się je.
Forum PHP.pl > Forum > Po stronie przeglądarki
Fifi209
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.
vokiel
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.
Fifi209
Jakbym chciał robić tyle funkcji to bym nie założył tego tematu. Chodzi mi, aby zrobić jakąś uniwersalną.
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.