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: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław Ostrzeżenie: (0%)
|
Cytat(Vomit @ 2006-03-14 20:18:54) Mam shoutboxa i chcialbym aby nie odswiezał mi sie on za pomoca Refresh co np. 30 sekund, tylko sprawdzał czy doszly nowe wpisy, jesli tak to odrazu je wyswietlal. @Vomit Kolo nikt Nie zrobi Ci na gotowe całego skryptu... Pomyśl logicznie jak byś to załatwił... Przykłady, kyóre pokazał TomaSS pokazują wiele zastosowań tego AJAX'a... poczytaj sobie jak wybiera sie dane z serwera i wstawia na strone... (przykład Anakina URL=http://advajax.anakin.us/index-pl.htm]Ładowanie danych do trzech warstw[/URL])...nasz tam jak na dłoni jak wstawić dane na strone... dalej w pliku php masz dużo możliwości.. możesz wyświetlić z bazy lub z pliku ostatnie wpisy, może sz sprawdzić jakie wpisy masz wyświetlone i sprawdzić, czy są jakies inne niż te co masz wyświetlone... pokombinuj... wszystko da sie zrobic... 3m sie... Ten post edytował kukix 17.03.2006, 16:10:46 |
|
|
|
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
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
TomASS Może coś wyjaśnię.
Rzeczywiście mike_mech - nie ... 17.03.2006, 18:51:06
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 |