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%)
|
Witam.
Zainteresowałem sie przykładem autora advajax, "stronnicowanie danych"... kod źódłowy wziełem z płytki "php solutions" i napotkałem pare problemów, które nie potrafie obejśc... pierwszym, który napotkałem to wstawienie styli do tabelki generowanej przes skrypt js oto kod autora advajax: Kod function parseRecords(xml) { with (xml.getElementsByTagName("records").item(0)) { page = getAttribute("page")*1; maxPerPage = getAttribute("max_per_page"); startId = maxPerPage*page+1; total = getAttribute("total")*1; maxPage = Math.ceil(total/maxPerPage); $("dataStats").innerHTML = " Rekordy: " + startId + " - " + (startId+getAttribute("count")*1-1) + " z " + total + " (Strona: " + (page+1) + " z " + maxPage + ")"; } $("btnFirst").style.visibility = $("btnPrev").style.visibility = page == 0 ? "hidden" : "visible"; $("btnLast").style.visibility = $("btnNext").style.visibility = page+1 == maxPage ? "hidden" : "visible"; d = $("dataTable"); for (i = d.rows.length-1; i >= 0; i--) d.deleteRow(i); record = xml.getElementsByTagName("record"); result = ""; for (i = 0; i < record.length; i++) { tr = document.createElement("tr"); td = document.createElement("td"); /* próbówałem tak: td = style.font-weight: = "bold"; */ td.innerHTML = startId + i; tr.appendChild(td); for (j = 0; j < 3; j++) { td = document.createElement("td"); td.innerHTML = record[i].childNodes[j].childNodes[0].nodeValue; tr.appendChild(td); } d.appendChild(tr); } return result; } jak to obejśc..? da sie zrobić tak, żeby do kolumny z Imieniem dodac "align=center" , albo class=styyl ? Nie moge sobie z tym poradzić... może ktośrobił już to i może mi pomóc? P.S. Wogóle nie rozumie, jak powstaje ta tabelka.. domyslam sie, że document.createElement("td"); jest funkcją wbudowaną w js i ona tworzy tabelke... Ten post edytował kukix 8.03.2006, 19:44:36 |
|
|
|
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
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
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 - 20:47 |