Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Metody przesyłania i obróbki danych
xamil
post 17.05.2006, 05:44:20
Post #1





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 9.01.2005

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


Witam.

Jak pobierać i wyświetlać dane? Jak wy to robicie? Nie chodzi mi oczywiście o
funkcje;) ale o rozwiązanie.

Znam takie metody:

1. Wywołujemy xmlhttprequest który zwraca nam gotowy kod który za pomocą
innerHtml włączamy do div'a.
2. Wywołujemy xmlhttprequest który zwraca nam kod javascript (a dokładniej np.
tablice z danymi), przy pomocy funkcji eval() wykonujemy go i następnie
obrabiamy gotowymi funkcjami które tworzą np. tabelke i wstawiają do strony.
(tą metode stosowałem)
3. Wywołujemy xmlhttprequest który zwraca nam xml'a i z niego odczytujemy dane
i jak wyzej obrabiamy gotowymi funkcjami.

Ogólnie co chce osiągnąć? Dla przykładu mamy strone a na niej dane w tabelce i
kope innych pierdół. Nie chce odświerzać całej strony a tylko tą tabelke. I
teraz zalety i wady opcji:

1. Wszystko dzieje sie po stronie serwer'a który zwraca nam gotowe fragmenty
kodu (w tym wypadku tabele) wykorzystując smarty. Jest to spora zaleta, że nie musimy wykorzystywać js. Niestety w tym przypadku mamy ograniczone pole manewru. A co jeśli chcemy wczytać coś do dwóch div'ow naraz? Nie przekażemy w ten sposób naraz treści do dwóch divow.
2. Tu już jest ciekawiej. Tą metode kiedyś już użyłem. Można przesyłać wiele danych czyli można np. naraz updejtnąć kilka div'ow w których mamy treść czy tabele. Wada? Wszystko tworzymy dynamicznie. Sporo zabawy żeby stworzy głupi wiersz w xhtml'u. W dużym projekcie to syzyfowa praca. O wiele lepiej widzę tu smarty tworzące gotowe tabele po stronie serwer'a. Dodatkowow na starych komputerach może to strasznie zwalniać.
3. W sumie to samo co wyżej tyle tylko, że dane z XML'a. Chyba jeszcze gorsze niż poprzednie.

Zastanawia mnie jak to ugryść w oparciu o schemat MVC. Czyli dochodzę do widoku i co tutaj tak naprawde tworzyć? Gotowe fragmenty, fragmenty z kodem js, sam js?
Najlepiej to chyba by było połączyć jakoś te dwie pierwsze opcje. Czyli, że w odpowiedzi na zapytanie xmlhttprequest dostajemy gotowe fragmenty kodu oraz funkcje i zmienne js które modyfiukują pozostałą treść i w sumie wiedzą co mają zmienić na stronie.

Co wy o tym sądzicie?

Z góry dzięki za odpowiedzi.
Go to the top of the page
+Quote Post
anopak
post 17.05.2006, 07:18:04
Post #2





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.10.2004
Skąd: Rybnik

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


ja korzystam z prototype i Ajax.Updater z opcją evalScripts, dzięki czemu mogę przekazać zarówno kod HTML jak i JS smile.gif. Jeżeli chce coś załadować do dwóch divów to już faktycznie jest troche zabawy, ale zawsze można wywołac 2 AJAXy winksmiley.jpg


--------------------
Hardware: Celeron 3.06, 512 MB DDR
Software: Apache 2.0, MySQL 4.0, php 4.3.1, Zend 5.1, Firefox
Go to the top of the page
+Quote Post
xamil
post 17.05.2006, 07:26:15
Post #3





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 9.01.2005

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


Tak, metoda z dwoma ajax'ami też mi przyszła do głowy ale wydaje mi się to niezbyt dobre. Bo po co łączyć się dwa razy jak można raz?
Go to the top of the page
+Quote Post
anopak
post 17.05.2006, 19:26:13
Post #4





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.10.2004
Skąd: Rybnik

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


to może niech serwer zwraca za jednym zapytaniem 2 divy, a JavaScriptem podzielić to na 2 i do 2 osobnych załadować...


--------------------
Hardware: Celeron 3.06, 512 MB DDR
Software: Apache 2.0, MySQL 4.0, php 4.3.1, Zend 5.1, Firefox
Go to the top of the page
+Quote Post
xamil
post 18.05.2006, 07:22:46
Post #5





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 9.01.2005

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


To też jakiś pomysł. Generalnie wtedy trzeba przyjąć strategie, że ładujemy na początku jakiś interfejs z kodem js obsługującym wszelkie żądania i teraz ten kod sam by wiedział, ze jak wykonaliśmy takiego requesta to do jednego div'a ślemy to do drugiego oraz dodatkowo włączamy spowrotem mozliwosc kl;ikniecia tu i tu. Trzeba jednak pamiętać że wtedy usimy załadować cały skrypt odpowiedzialny za obsługe żądań już na początku. Ewentualnie będą też requesty js o kod dodatkowy kod js.

Myśle że tak to trzeba będzie chyba rozwiązać.
Go to the top of the page
+Quote Post
anopak
post 18.05.2006, 13:08:21
Post #6





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.10.2004
Skąd: Rybnik

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


no chyba, ze kod ktory bedziesz ladowal będzie to js w stylu:

  1. $('div1').innerHTML='tresc 1 diva';
  2. $('div2').innerHTML='tresc 2 diva';


w tym momencie zawsze masz takiego samego requesta, nie potrzebujeszcz dodatkowych funkcji do rozdzielania, ale za to musisz przygotować tresc diva zawsze w jednej linijce i bez cudzyslowow - proste do zrobienia w php...
a w JS dajesz tylko eval();

w przypadku Prototype było by to tak:
  1. $('link').onclick=function(){
  2. this.ajax=new Ajax.Updater('jakis_div','/link/do_requesta',{
  3.  parameters:'ewentualne=paramentry&dla=requesta',
  4.  method:'post', //lub 'get'
  5.  evalScript:true
  6. });
  7. return false;
  8. }


dzięki temu możesz załadować zarówno HTML do diva, jak i skrypty ladujace HTML do innych divow...


--------------------
Hardware: Celeron 3.06, 512 MB DDR
Software: Apache 2.0, MySQL 4.0, php 4.3.1, Zend 5.1, Firefox
Go to the top of the page
+Quote Post
xamil
post 18.05.2006, 13:22:11
Post #7





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 9.01.2005

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


Miałem podobną myśl jak w pierwszym przypadku.

Drugiego przypadku (choć w sumie to to samo) nie wymyślałem bo nie używałem jeszcze żadnych bibliotek;)

Ogólnie te rozwiązania są jak dla mnie trochę pokręcone i nie widziało mi się ich używać ale teraz mnie upewniliście, że są jedynymi słusznymi;)

Jeszcze raz dzięki za podpowiedzi i rozjaśnienie sytuacji.

Pozdrawiam, Kamil
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 Wersja Lo-Fi Aktualny czas: 28.04.2024 - 05:36