Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%)
|
Z topicu powstal artykuł
http://wortal.php.pl/phppl/wortal/artykuly...tarcie_z_ajaxem topic przeznaczony na dyskusję na jego temat ---- nospor Moje pierwsze starcie z AJAXem czyli przewodnik dla całkowicie zielonych. Na podstawie klasy advAJAX Łukasza Lacha. Zaskoczony sukcesem AJAXa w sieci, oraz problemami wielu użytkowników, postanowiłem zobaczyć z „czym to się je”, a moje doświadczenie przkazać innym. Zabieram się za googlowanie. Zaczynam od tego czym właściwie jest AJAX. Jest, już przeczytałem - ale nie będę się tutaj rozpisywał, że jest to ble, ble, ble….tylko tak na mój chłopski rozumek. Jest to zaprzężenie JavaScriptu do ingerencji w kod HTML strony. JavaScript wysyła żądanie do serwera i otrzymuje odpowiedź, na jej podstawie modyfikuje cały czas otwartą stronę HTML. Z technicznego punktu widzenia opiera się na „magicznej” właściwośći przeglądarki, która na zadane żądanie dostaje od serwera odpowiedź (XMLHttpRequest) w postaci tekstu (responseText) lub w postaci XML (responseXML). JavaScript „obrabia” odpowiedź i ingeruje w kod HTML (np. innerHTML lub window.write() ). Googluję dalej, aby dowiedzieć się jak się z tego kożysta. W moje ręce wpada jedna z lepszych klas (i chyba jedyna polska klasa) advAJAX (http://advajax.anakin.us/index-pl.htm) autorstwa Łukasza Lacha. Klasa ta pozwala w prosty sposób kontrolować stan, w jakim jest nasze zapytanie. W skrócie polega to na tym, że wywołujemy metodę get() lub post() obiektu advAJAX i otrzymujemu odpowiedź (obj): Kod advAJAX.get({ url: "http://www.example.com/page.html", onSuccess : function(obj) { alert(obj.responseText); } }); W przykładzie tym próbujemy wykonać zapytanie (metodą get() ) na adresie: http://www.example.com/page.html. Po zakończeniu (onSuccess) wyświetlamy cały tekst w okienku (alert). Równie dobrze mogłaby być tutaj dowolna funkcja JS: Kod advAJAX.get({ url: "http://www.example.com/page.html", onSuccess : function(obj) { dodajHTML(obj.responseText);} }); Możemy też przekazać w urlu jakieś zmienne: Kod page = parseInt(document.getElementById("page").value); advAJAX.get({ url: "http://www.example.com/page.php?p="+page, onSuccess : function(obj) { dodajHTML(obj.responseText);} }); Klasa ta pozwala nie tylko kontrolować sytuację, w której strona załadowała się pomyślnie (onSucces), ale również w kilkunastu innych przypadkach, min w momencie inicjalizacji, podczas ładowania, po zakończeniu, po zakończeniu błędem, po zakończeniu sukcesem (pełny spis na (link) ). Np. aby zrobić napis (proszę czekać – loading): Kod page = parseInt(document.getElementById("page").value); advAJAX.get({ url: "http://www.example.com/page.php?p="+page, onInitialization : function(obj) ( ShowLoading();}, onSuccess : function(obj) { dodajHTML(obj.responseText);}, onFinalization : function(obj) { HideLoading();} }); Wszystkie statusy polegają na interpretowaniu właściwości http_request.readyState odpowiedzi. Klasa ta obsługuje również ponawianie połączenia, pamięć tymczasową przeglądarki, obsługę formularzy i grupowanie wywołań. Myślę, że ciekawym przykładem, będzie przykład samego autora tej klasy. Będzie to stronicowanie. Do działania przykładu potrzebne są cztery pliki:2.html który zawiera cały kod html strony. Kod ten będzie modyfikowany przez JavaScript zawarty w pliku 2.js . W pliku 2.js jest funkcja getRecords() która wysyła proźbę (zapytanie) do pliku 2.php, który generuje odpowiedni XML. Działa to tak: - użytkownik wczytuje stronę 2.html - kod JS zawarty w pliku 2.js wysyła żądanie do pliku 2.php - plik 2.php generuje odpowiedni kod XML i wysyła go z powrotem do JS (plik 2.html jest ciągle otwarty w oknie przeglądarki) - kod JS otrzymuje odpowiedź w postaci obj.responseXML i funkcją parseXML modyfikuje kod strony 2.html (dodaje odpowiednie tagi do <tbody id="dataTable"> </tbody>. Oczywiście nie możemy zapomnieć o ostatnim, najważniejszym pliku – klasie advAJAX.js. Przykładowy kod generujący XML może wyglądać tak:
Oczywiście nic nie stoi na przeszkodzie kożystać z innch klas, lub samemu napisać dla siebie klasę obsługi AJAXa a w ostateczności używać „gołego” XMLHttpRequest. Ufff to by było na tyle. Może na sam koniec troszkę linków: Strona projektu advAJAX Ajax w „gołej” postaci Ajax wiki Klasa do obsługi AJAX Małe conieco o AJAX A oto co można zrobić przy pomocy AJAXa: https://www.paguna.com/ http://demo.script.aculo.us/ http://www.google.com/webhp?complete=1&hl=en http://www.clearnova.com/ajax/ http://24ways.org/advent/easy-ajax-with-prototype http://www.digitalmediaminute.com/article/...s-and-resources Mam nadzieję, że przybliżyłem problematykę związaną z technologią AJAX. Jednak jak każda technologia ma swoje wady i zalety, nie można jej używać do wszystkiego, jednak to pozostawiam już czytelnikom..... |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%)
|
Może coś wyjaśnię.
Rzeczywiście mike_mech - nie ma wpływu na SMARTY. Inn sprawa, że advAJAX może wysłać żądanie do serwera, który dzięki SMARTY wygeneruje jakiś HTML i później dzięki innerHTML można ten kod umieścić na stronie. Ale na sposób generacji AJAX może wpływać tylko poprzez żądanie do serwera. Cytat Nie po to pobierasz dane metoda get obiektu advAjax aby te dane wysylac spowrotem na serwer w celu wrzucenia ich do szablonu smarty. Myślę, że nie o to chodziło eMartio - możesz AJAXem pobrać (przy pomocy np. GET) cały wygenerowany szablon i umieścić go w divie. Cytat I jak teraz z pliku index.php przesłać nowe dane do templejtu? Nowe dane nie prześlesz do templejtu, możesz co najwyżej wygenerować nowy kod HTML. Cytat Dla jasnosci advAjax zmienia zawartosc juz wygenerowanej strony, a szablon smarty jest wzorem na podstawie ktorego sie te strone generuje. advAjax nie zmienia wzoru tylko wynik. Właśnie o to chodzi - AJAX nie zmieni szablonu lecz tylko jego zawartość. @kukix: Cytat Czytałem troche na stronie advAJAX o wysyłaniu formularzy no i sa tam dwa sposoby wysyłania formularzy.. jeden to Noi brawo (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) a gdybyśmy dali Ci na początku gotowe rozwiązanie, to prawdopodobnie trudniej by Ci było się zmotywować do poczytaniu o AJAXie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Cytat Jak myslicie, który sposób jest lepszy i do czego jest lepszy... Myślę, że advAJAX.assign jest lepszym rozwiązaniem przy wysyłaniu formularzy. Po to (prawdopodobnie) został stworzony. Pomyśl sobie, jakbyś miał formularz generowany przez php bądź JS i niewiedział ile masz pól (np. checkboxów lub selectów) - wtedy wysyłanie submitem mogłoby być troszkę uciążliwe. Cytat P.S2 Jest w advAJAX taka "opcja", która czyści cały formularz.. np po wysłaniu formularza? czy trzeba wszystkie pola ręcznie czyścić? jest instrukcja JavaScript, która "zeruje" formularz: Kod this.form.reset();
|
|
|
|
TomASS [ajax] Moje pierwsze starcie 7.02.2006, 23:29:28
Puciek Boom
Wg. mnie nadaje sie to na artykul 8.02.2006, 04:39:09
mike_mech Temat jest ostatnio popularny a ~TomASS napisał ki... 8.02.2006, 08:59:00
aleksander to zdecydowanie nadaje się na artykuł, tutaj kompl... 8.02.2006, 14:38:28
mariuszn3 Według mnie większość tych klas do ajaxa (a chodzi... 8.02.2006, 14:41:07
crash Tak czy inaczej artykuł bardzo dobry i pomocny dla... 8.02.2006, 14:47:27
mariuszn3 Cytat(crash @ 2006-02-08 13:47:27)Tak czy ina... 8.02.2006, 15:04:20
NX_Turbospeed Nic z tego nie zrozumialem. Pozaym co ten Ajax rob... 8.02.2006, 20:52:39
crash Najprostrzy przykład użycia, na chłopski rozum: AJ... 8.02.2006, 21:31:01
NX_Turbospeed Aha. Pożyteczne ;P
---
Nabijanie postów.!
Ko... 9.02.2006, 14:42:18
TomASS Witam. Aby jeszcze bardziej przybliżyć technologię... 9.02.2006, 20:05:01
Radarek Nie jestem ekspertem od js ale takie cus widze po ... 9.02.2006, 22:00:22
crash Ta... Tutaj $ to po prostu nazwa funkcji. 9.02.2006, 22:06:19
Radarek No to szyd niezly . Nie dziwie sie wiec, ze powsta... 9.02.2006, 23:45:39
Marusz TomASS, jest juz pozno wiec bede sie streszal:
Cyt... 10.02.2006, 02:48:17
Tajny Marusz
pragnę tylko przypomnieć że używanie COUNT... 13.02.2006, 16:53:57
snipe z tego co wywnioskowalem, to ajax sluzy do dynamic... 15.02.2006, 13:59:09
TomASS Cytatajax sluzy do dynamicznego zmieniania zawarto... 15.02.2006, 14:32:39
mariuszn3 Cytat(snipe @ 2006-02-15 12:59:09)z tego co w... 15.02.2006, 15:46:06
Termit_ Hmm.. a co mają zrobić osoby, które wyłączają JS, ... 15.02.2006, 19:09:15
FiDO I tu wlasnie wychodzi, jak to moj kolega z grupy l... 15.02.2006, 19:21:02
TomASS Ja to robię wpierw jedną stronę - dla której nie p... 15.02.2006, 19:37:20
Termit_ Jasne. Wszystko przecież zależy od charakteru witr... 15.02.2006, 20:41:14
TomASS Witam ponownie wszystkich forumowiczów
Postano... 2.03.2006, 08:21:24
bigZbig @TomASS - pierwszy post, z wyjatkiem sparafrazowan... 2.03.2006, 09:42:16
mike_mech Cytat(bigZbig @ 2006-03-02 09:42:16)(...) Czy... 2.03.2006, 09:58:22
bigZbig Cytat(mike_mech @ 2006-03-02 10:58:22)Niestet... 2.03.2006, 10:23:38
kukix Witam.
Zainteresowałem sie przykładem autora advaj... 8.03.2006, 19:41:57
TomASS Tabelka jest już gotowa - zobacz do źródła tego pl... 8.03.2006, 22:50:00
kukix Dzieki TomASS, Twoja odpowiedź była pomocna.
jedn... 9.03.2006, 19:51:32
Diwi z tego co się orientuje w javascripcie to zamiast:... 9.03.2006, 20:56:41
TomASS CytatMam w administracji dział newsy, w którym zna... 10.03.2006, 13:55:52
kukix Dzieki chlopaki za pomoc.. teraz już dużo mi sie r... 11.03.2006, 18:56:29
TomASS CytatPrzeglądałem przykłady zastosowania AJAX... 11.03.2006, 22:58:33
anAKiN Bardzo ładnie, panowie 12.03.2006, 10:25:30
TomASS Dzisiaj przeczesując czeluścia internetu natrafiłe... 12.03.2006, 14:11:15
kukix Siedze już kurde drugi dzień nad tym ajaxem i albo... 13.03.2006, 20:53:10
Vomit A jak zrobic cos w stylu loadingu ale z procentami... 13.03.2006, 21:33:13
TomASS Dla bardziej zainteresowanych napisałem kolejny pr... 13.03.2006, 22:07:32
Vomit A moze jakis przyklad w stylu tego o co pytalem w ... 14.03.2006, 19:18:54
kukix Cytat(Vomit @ 2006-03-14 20:18:54)Mam shoutbo... 14.03.2006, 22:06:28
mike_mech Cytat(eMartio @ 2006-03-17 10:53:26)Czy można... 17.03.2006, 14:49:22
kukix Mam jeszcze taką sprawę...
Czytałem troche na str... 17.03.2006, 16:11:07
bigZbig Cytat(eMartio @ 2006-03-17 18:21:45)I jak ter... 17.03.2006, 17:50:54
chomiczek Hmm.. ja właściwie dopiero zainteresowałem sie AJA... 18.03.2006, 03:43:05
kukix Używam do wysyłania fomrularza AJAX'a .. wszys... 19.03.2006, 21:50:53
bigZbig Nie latwiej zrobic osobne funckje dla obslugi kazd... 20.03.2006, 08:30:32
kukix Mam takie pytanie co do advAJAX.assign()...
Chodzi... 20.03.2006, 17:10:32
chomiczek Hmm.. ja mam pytanko dot. tego czego lepiej użyć, ... 21.03.2006, 08:37:53
bigZbig Mozesz wyslac jedno zapytanie do serwera i odbiera... 21.03.2006, 08:55:53
anAKiN Cytatno i problem jkest w tym, że z tego formularz... 22.03.2006, 11:40:18
chomiczek a kiedy mozna spodziewać się wersji 1.1?? 22.03.2006, 15:37:23
anAKiN Cytata kiedy mozna spodziewać się wersji 1.1??
Na ... 22.03.2006, 22:06:28
TomASS CytatNa koniec przyszlego tygodnia, prawdopodobnie... 22.03.2006, 23:12:45
kukix Cytat(anAKiN @ 2006-03-22 23:06:28)Na koniec ... 24.03.2006, 11:44:21
anAKiN AdvancedAJAX 1.1
http://anakin.us/blog/advancedaja... 25.03.2006, 03:08:42
TomASS Szkoda, że onProgress działa tylko na Mozili Bard... 25.03.2006, 09:42:19
michalr jak jest z tym "url:"
czy mozna pobiera... 27.03.2006, 09:44:02
Radarek Mozesz pobierac tylko dane z serwera, z ktorego zo... 27.03.2006, 11:35:11
kukix Cytat(anAKiN @ 2006-03-22 12:40:18)Cytatno i ... 28.03.2006, 19:12:11
anAKiN Fakt. Poprawione:
http://advajax.anakin.us/opera/t... 28.03.2006, 20:20:53
kukix OK.. teraz tablice śmigają elegancko ...
Szkoda, ... 29.03.2006, 20:32:40
TomASS W Operze to działa połowicznie... 29.03.2006, 21:00:59
anAKiN Cytat(TomASS @ 2006-03-29 22:00:59)W Operze t... 29.03.2006, 21:31:35
TomASS Wybacz Łukaszu moje niedoinformowanie. Otóż testow... 29.03.2006, 22:03:52
kukix A co z polskimi literami?
Wysyłając formularz funk... 30.03.2006, 14:32:44
chomiczek Gdzieś wyczytałem, w tej chwili nie pamiętam źródł... 31.03.2006, 09:02:54
Vogel z moich zabaw z komunikacją Flash <-> JS ... 31.03.2006, 10:26:38
mariuszn3 Do przesyłania różnych dziwnych znaczków (w tym po... 31.03.2006, 10:32:47
pawel_k nie wiem czy to jest błąd czy przemyślana sytuajcj... 1.04.2006, 16:13:51
chomiczek a ja właśnie sprawdziłem kwestie kodowania i nie t... 1.04.2006, 20:56:57
Zepco Cytat(Radarek @ 2006-03-27 12:35:11)Mozesz po... 2.04.2006, 18:55:34
chomiczek Cytat(Zepco @ 2006-04-02 17:55:34)Da się to j... 2.04.2006, 19:10:53
kukix Cytat(pawel_k @ 2006-04-01 17:13:51)co do pol... 7.04.2006, 19:22:08
TomASS Hej. Może by tak kolejny przykładzik kogoś zainter... 12.04.2006, 22:09:18
bigZbig @TomASS -> ciekawy przyklad - lubie zabawy z ko... 13.04.2006, 07:08:50
nospor Z racji faktu, iż powstał artykuł na podstawie top... 13.04.2006, 14:32:56
marcz Witam!
Muszę przyznać, iż idea AJAXu bardzo m... 17.04.2006, 18:54:51
TomASS Cześć
ad 2 skor pyt 1 zostało wycięte
Załóżmy,... 17.04.2006, 21:54:11
marcz dzięki za odpowiedź 18.04.2006, 21:28:12
kukix Witam. Tak ostatnio próbowałem udoskonalić mój skr... 29.05.2006, 10:29:20
TomASS 1. pytanie:
ja to robię tak:
[PHP] pobierz, plaint... 29.05.2006, 14:04:20
yaotzin Powiem szczerze ten artykuł tak naprawdę zaciemnia... 14.02.2007, 01:52:47 
mariuszn3 Cytat(yaotzin @ 14.02.2007, 01:52:47 ... 14.02.2007, 02:10:10
yaotzin Cytat(mariuszn3 @ 14.02.2007, 02:10:1... 14.02.2007, 12:11:17
TomASS Dzięki za uwagi!
CytatBo nie wiem czy to pow... 23.02.2007, 13:40:31
yaotzin Cytat(TomASS @ 23.02.2007, 13:40:31 )... 28.02.2007, 18:55:05
E -dd CytatNo tak AJAX to technologia
AJAX to też nie te... 2.03.2007, 15:47:44
yaotzin Cytat(E -dd @ 2.03.2007, 15:47:4... 3.03.2007, 13:58:15
slawek_master jak dla mnie to artykul napisany malo zrozumiale, ... 12.12.2007, 19:58:43
Xafaso Jakie zdziwienie wszystkich ogarnęło... Jakby AJAX... 22.12.2008, 07:48:09
erix Zanim coś powiesz, zastanów się 3 razy...
CytatBar... 22.12.2008, 11:08:03
Crozin CytatAJAX nie jest napędzany przez JS? :|AJAX nie ... 22.12.2008, 12:26:14 
nexis Cytat(Crozin @ 22.12.2008, 12:26:14 )... 23.12.2008, 23:31:33
erix CytatAJAX to najzwyklejszy na świecie JS
No jak ni... 22.12.2008, 13:16:03
Crozin CytatOwszem, coś innego.Chodziło mi o to, że przyk... 22.12.2008, 13:47:17
erix A to to się zgodzę.
Swoją drogą - ad. tematu - t... 22.12.2008, 14:14:41
Xafaso No dobrze mogę się zgodzić, ale jednak AJAX się tr... 23.12.2008, 04:43:09
Crozin Czym się różni? 23.12.2008, 08:12:59 ![]() ![]() |
|
Aktualny czas: 1.12.2025 - 21:24 |