[ajax] Moje pierwsze starcie, czyli przewodnik dla całkowicieZielonych |
[ajax] Moje pierwsze starcie, czyli przewodnik dla całkowicieZielonych |
7.02.2006, 23:29:28
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..... -------------------- |
|
|
8.02.2006, 04:39:09
Post
#2
|
|
TAO programowania Grupa: Zarejestrowani Postów: 340 Pomógł: 3 Dołączył: 25.03.2003 Skąd: ze słoika Ostrzeżenie: (30%) |
Boom
Wg. mnie nadaje sie to na artykul -------------------- |
|
|
8.02.2006, 08:59:00
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) |
Temat jest ostatnio popularny a ~TomASS napisał kilka ciekawych informacji.
Podpinam. (ewenualne dyskusje o AJAXie, oraz ciekawe spostrzeżenia czy porady proszę zamieszczać tutaj) A ja przeniosę z początkujący na poziom wyzej --- nospor |
|
|
8.02.2006, 14:38:28
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 742 Pomógł: 0 Dołączył: 14.12.2003 Skąd: Gdańsk, Trójmiasto Ostrzeżenie: (0%) |
to zdecydowanie nadaje się na artykuł, tutaj kompletnie nie pasuje.
|
|
|
8.02.2006, 14:41:07
Post
#5
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) |
Według mnie większość tych klas do ajaxa (a chodzi przecież o bardzo prosty w obsłudze, z raptem paroma metodami obiekt xmlHttp - szczerze nie lubię nazwy ajax) tylko zaciemnia i komplikuje całą idee.. a początkującym użytkownikom utrudnia zrozumienie jakie naprawdę ma możliwości obiekt xmlHttp i robi z całego obiektu jakiś trudny do ogarnięcia moloch.
Bardzo dobry artykuł o xmlHttp (po angielsku) jest też tutaj |
|
|
8.02.2006, 14:47:27
Post
#6
|
|
Grupa: Przyjaciele php.pl Postów: 2 196 Pomógł: 2 Dołączył: 17.01.2004 Skąd: Sosnowiec Ostrzeżenie: (0%) |
Tak czy inaczej artykuł bardzo dobry i pomocny dla osób zaczynających z AJAX'em. mariuszn3: Gdyby wszystkiego używało się łatwo i przyjemnie to nie powstawałyby takie rzeczy jak AJAX, ADoDB czy połowa PEAR'a. A z innej beczki: poprawiłem pare literówek w kodzie JS, żeby nie było, że coś nie działa.
-------------------- |
|
|
8.02.2006, 15:04:20
Post
#7
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) |
Cytat(crash @ 2006-02-08 13:47:27) Tak czy inaczej artykuł bardzo dobry i pomocny dla osób zaczynających z AJAX'em. mariuszn3: Gdyby wszystkiego używało się łatwo i przyjemnie to nie powstawałyby takie rzeczy jak AJAX, ADoDB czy połowa PEAR'a. A z innej beczki: poprawiłem pare literówek w kodzie JS, żeby nie było, że coś nie działa. Crash a co to jest AJAX? W ogóle przeczytałeś uważnie to co napisałem, czy gdzieś w swoim poście wspomniałem, że pisanie bibliotek upraszczających korzystanie z narzędzi jest bez celowe? |
|
|
8.02.2006, 20:52:39
Post
#8
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 11.12.2005 Ostrzeżenie: (0%) |
Nic z tego nie zrozumialem. Pozaym co ten Ajax robi wogole?
|
|
|
8.02.2006, 21:31:01
Post
#9
|
|
Grupa: Przyjaciele php.pl Postów: 2 196 Pomógł: 2 Dołączył: 17.01.2004 Skąd: Sosnowiec Ostrzeżenie: (0%) |
Najprostrzy przykład użycia, na chłopski rozum: AJAX pozwala na zmianę treści części strony bez przeładowywania całej strony dając także dodatkowe możliwości jak np. wyświetlenie informacji o trwaniu przeładowywania danych etc.
-------------------- |
|
|
9.02.2006, 14:42:18
Post
#10
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 11.12.2005 Ostrzeżenie: (0%) |
Aha. Pożyteczne ;P
--- Nabijanie postów.! Kolejne takie posty będą karane. ~mike_mech |
|
|
9.02.2006, 20:05:01
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
Witam. Aby jeszcze bardziej przybliżyć technologię AJAX, przedstawie jeszcze jeden przykład. Jest to ulepszona walidacja formularza do rejestracji użytkownika. Potrzebny będzie nam jak zwykle plik klasy advAJAX.js, plik z funkcjami js (register.js), oraz pliki: register.php oraz register2.php…… troszkę dużo się nazbierało, ale już wyjaśniam.
Ogólna idea jest taka: Wczytujemy formularz z pliku register.php, po wypełnieniu pól zaczyna się magia……ekhm, no nie zupełnie, zaczyna się AJAX, wywołuje odpowiednią funkcję JS, która przesyła odpowiednie dane (z formularza) do pliku register2.php, on daje odpowiedź i ajax na podstawie otrzymanej odpowiedzi wysyła bądź nie formularz. Ktoś może powiedzieć, że to można zrobić bez ajaxa – fakt, można, ale nie zamierzam nikogo do tego przekonywać, potraktujmy to jako ćwiczenie. Zaczniemy od pliku register.php. Równie dobrze, mógłby być to register.html, to bez różnicy:
Plik ten ma za zadanie wyświetlenie formularza, mamy 4 pola: Login, Hasło, Powtórz hasło oraz e-mail. Aby nie gmatwać przykładu zajmiemy się tylko „dodatkową” walidacją, czyli czy użytkownik lub e-mail istnieją już w bazie danych. Do przycisku Zarejestruj mnie…. Przypisana jest akcja „sprawdź dane()” która znajduje się w pliku register.js, który wygląda następująco:
Funkcja sprwawdz_dane pobiera wartości pól input text login oraz email I na ich podstawie generuje odpowiednie zapytanie do pliku register2.php. Zapytanie to jest wykonywane (url: zapytanie). Jako odpowiedź mamy trzy możliwości: albo jest to login – tzn „login” jest już w bazie danych, albo jest to „email” – znaczy się ze e-mail jest w bazie, oraz”OK” – wszystko w porządku (można wysyłać formularz - $("registerForm").submit(); ) i zostanie wysłany formularz do pliku register3.php. Plik, który generuje odpowiedź na zadane żądanie (register2.php) wygląda następująco:
Nic nadzwyczjanego – dwa zapytania i tyle. Oczywiście, można jeszcze kombinować z metodą assign klasy advAJAX:
ale to już pozostawiam do treningiu. Całe rozwiązanie można podpatrzeć tutaj http://advajax.anakin.us/phpsolutions/1.html Powodzenia drodzy forumowicze. ------------------------edit---------------------------------- Poprawiłem uwagi Marusza, sorki, nie wszystko można zauważyć pisząć, pewnie dlatego, że sam mam złe nawyki A co do mysql_num_rows() to nie za bardzo się mogę zgodzić, ponieważ tak czy siak będą potrzebne dwa zapytania.......a co się tyczy niekonsekwencji to? Ten post edytował TomASS 10.02.2006, 09:30:46 -------------------- |
|
|
9.02.2006, 22:00:22
Post
#12
|
|
Grupa: Zarejestrowani Postów: 188 Pomógł: 0 Dołączył: 23.05.2005 Ostrzeżenie: (0%) |
Nie jestem ekspertem od js ale takie cus widze po raz pierwszy.
Cytat var email = $("email").value; To jest w ogole poprawne? |
|
|
9.02.2006, 22:06:19
Post
#13
|
|
Grupa: Przyjaciele php.pl Postów: 2 196 Pomógł: 2 Dołączył: 17.01.2004 Skąd: Sosnowiec Ostrzeżenie: (0%) |
Ta... Tutaj $ to po prostu nazwa funkcji.
-------------------- |
|
|
9.02.2006, 23:45:39
Post
#14
|
|
Grupa: Zarejestrowani Postów: 188 Pomógł: 0 Dołączył: 23.05.2005 Ostrzeżenie: (0%) |
No to szyd niezly . Nie dziwie sie wiec, ze powstaja artykuly o takim tytule :
link . |
|
|
10.02.2006, 02:48:17
Post
#15
|
|
Grupa: Zarejestrowani Postów: 191 Pomógł: 0 Dołączył: 16.05.2003 Skąd: POLAND Ostrzeżenie: (0%) |
TomASS, jest juz pozno wiec bede sie streszal:
Cytat mysql_connect ("$dbhost","$dblogin","$dbhaslo") - Taki zapis jest nieprawidlowy. Uczysz poczatkujacych zlych nawykow... Cytat $login = addslashes($_GET['login']); $email = addslashes($_GET['email']); - Do zabezpieczenia stringow przed "zlymi" znakami w przypadku bazy danych sluzy funkcja mysql_escape_string(). Dlaczego nie powinno sie stosowac addslashes() znajdziesz na stronach php.net. Poza tym utworzenie tych dwoch zmiennych nie robi nic wiecej jak tylko zzera pamiec Cytat "SELECT count(*)AS Ile FROM uop_users WHERE Login='$login';" - Ten sam blad. Dziel stringi komponujac zmienne. Dzieki temu Twoj php ma mniej do myslenia. Procz tego masz wieksza kontrole nad tym co sie dzieje i skrypt jest bardziej czytelny. Dodatkowo w przypadku zapytan MySQL zalecane (ale nie wymagane) jest "ubieranie" nazw tabel i kolumn znaczkiem "`". Cytat count(*)AS Ile 2 zapytania stworzone niepotrzebnie. Zainteresuj sie funkcja mysql_num_rows(). Poza tym piszesz bardzo niekonsekwentnie. Niemniej dzieki za tekst, bo zawsze komus moze sie przydac. -------------------- |
|
|
13.02.2006, 16:53:57
Post
#16
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 28.07.2005 Skąd: 64-100 Leszno Ostrzeżenie: (0%) |
Marusz
pragnę tylko przypomnieć że używanie COUNT jest szybsze i to o wiele od mysql_num_rows , a zwlaszcza gdy rodzaj tabeli to MyIsam . Zwróć uwagę że select * a pozniej mysql_num_rows oznacza tyle co zwrocenie przez query calego select * itd. , a count (*) zwraca ci tylko jeden wiersz. Pozdrawiam -------------------- "Who controls the past controls the future. Who controls the present controls the past. "
|
|
|
15.02.2006, 13:59:09
Post
#17
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 1 Dołączył: 5.10.2005 Skąd: Opole/Chorzów Ostrzeżenie: (0%) |
z tego co wywnioskowalem, to ajax sluzy do dynamicznego zmieniania zawartosci strony bez przeladowania, czyli np. te reklamy na onecie co sie zmieniaja tez sa zrobione ajaxem??
-------------------- |
|
|
15.02.2006, 14:32:39
Post
#18
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
Cytat ajax sluzy do dynamicznego zmieniania zawartosci strony bez przeladowania Można by tak powiedzieć Cytat eklamy na onecie co sie zmieniaja tez sa zrobione ajaxem?? Chyba jest mało reklam które wymagają przeładowywania strony - one są prawdpodobnie napisane albo w "czystym JS" albo we flashu....tak mi się przynajmniej wydaje. -------------------- |
|
|
15.02.2006, 15:46:06
Post
#19
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) |
Cytat(snipe @ 2006-02-15 12:59:09) z tego co wywnioskowalem, to ajax sluzy do dynamicznego zmieniania zawartosci strony bez przeladowania, czyli np. te reklamy na onecie co sie zmieniaja tez sa zrobione ajaxem?? Nie do końca, to znaczy mało precyzyjnie. Do zmieniania zawartości strony bez przeładowywania wystarczy sam javascript. Obiekt xmlHttp (na tym opiera się hasło ajax) jest owszem obiektem javascript (pominę kwestię ie<=6) ale to nie nim zmieniamy zawartość strony i wcale nie trzeba z niego korzystać by móc zmodyfikować zawartość strony. Obiekt xmlHttp, pozwala na komunikację z serwerem co daje możliwość szybkiej interakcji użytkownik -> serwer bez przeładowywania strony.. a to już coś dużo więcej. Możemy dzięki temu odpowiadać na wszystkie zapytania użytkownika, których nie da się przewidzieć na poziomie programowania. Przykładowo, w wyszukiwarce strony możemy podać użytkownikowi wyniki wyszukiwania nie przeładowując jej (na płaszczyźnie html+js bez korzystania z tego obiektu nie ma innej możliwości wymiany informacji z serwerem ) A portale takie jak onet.pl muszą się trochę obudzić by zacząć korzystać z możliwości xmlHttp.. na razie są parę lat do tyłu i w żadym wypadku nie należy się na nich wzorować Ten post edytował mariuszn3 15.02.2006, 15:48:20 |
|
|
15.02.2006, 19:09:15
Post
#20
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 11.06.2005 Skąd: Gostyń Ostrzeżenie: (0%) |
Hmm.. a co mają zrobić osoby, które wyłączają JS, albo są zmuszone wejść na stronę np. linksem? Czy takie ślepe zauroczenie AJAX-em nie wpłynie zgubnie na, już i tak olewaną, kwestię dostępności witryn (WCAG i te sprawy)?
-------------------- @nospor: trzymajcie się. Wszystko będzie dobrze!
|
|
|
15.02.2006, 19:21:02
Post
#21
|
|
Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) |
I tu wlasnie wychodzi, jak to moj kolega z grupy ladnie ujal, "Najbardziej czasochłonny, skomplikowany, redundantny i niezauważany mechanizm, jaki można zaimplementować.". Chodzi oczywiscie o interfejs dla przegladarek bez takich "cudow" jak JS itp. Zobacz sobie serwisy google korzystajace z AJAXA jak dzialaja z wylaczonym JS.. nie jest to juz tak user friendly, ale jest w pelni uzyteczne. Boli jedynie to, ze trzeba to w porzadnej aplikacji zaimplementowac, a wiekszosc ludzi nawet tego nie zauwazy.
-------------------- Brak czasu :/
|
|
|
15.02.2006, 19:37:20
Post
#22
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
Ja to robię wpierw jedną stronę - dla której nie potrzeba JS, oraz przygotowuję zmodyfikowaną wersję z JS i AJAXem. Cos na styl poczty na interii - do wyboru
Natomiast zawsze staram się klienta pytać jaki sprzęt używa. Lynksa chyba nie używa nawet 0,0001% ludzi Ten post edytował TomASS 15.02.2006, 19:38:07 -------------------- |
|
|
15.02.2006, 20:41:14
Post
#23
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 11.06.2005 Skąd: Gostyń Ostrzeżenie: (0%) |
Jasne. Wszystko przecież zależy od charakteru witryny.
Nie chciałbym mieć po prostu takiej sytuacji, że wchodzę na shella, próbuję ściągnąć nowe php a tu kicha, bo linksem się do tego nie dostanę. Podobnie ze sprawdzeniem poczty – jasne, że raczej nie będę dokonywał zmiany konfiguracji profilu, nawet nie będę maila wysyłał – ale blokowanie możliwości sprawdzenia, czy ktoś coś mi przysłał byłoby IMHO nie na miejscu. O to mi mniej więcej chodziło . -------------------- @nospor: trzymajcie się. Wszystko będzie dobrze!
|
|
|
2.03.2006, 08:21:24
Post
#24
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
Witam ponownie wszystkich forumowiczów
Postanowiłem opisać jeszcze jeden przykład na wykorzystanie AJAXa oraz na rozwiązanie popularnego problemu od czasu do czasu poruszanego na tym forum. Chodzi tutaj o dwa selecty <span style="font-style: italic;">"sprzężone"</span> ze sobą w ten sposób, że wybór odpowiedniej pozycji na <span style="font-weight: bold;">selekcie1</span> wpływa na zawartość <span style="font-weight: bold;">selecta2</span> - np. mamy wybrać ze spisu jedną wieś w Polsce. Przeszukując selectem cały spis wszystkich miejscowości moglibyśmy się zaszukać na śmierć . Wygodniej byłoby wybierać po kolei: Województwo -> Powiat -> Gmina -> Miejscowość. Przedstawie tuta tylko pierwszy etap (Województwo -> Powiat) - dorobienie reszty jest już dziecinnie proste. Noto zaczynamy. Na początek podam definicję bazy danych abyście nie musieli się trudzić - oczywiście ktoś może ją wypełnić swoimi danymi:
Jak zwykle mamy 4 pliki. Pierwszy z nich to dobrze wszystkim znay plik <span style="font-weight: bold;">advajax.js</span>. Kolejnym plikiem jest <span style="font-weight: bold;">dzialaj.html</span> (plik który uruchamia użytkownik), plik <span style="font-weight: bold;">odpowiedz.php </span>- generujący odpowiedź z serwera w postaci XML oraz plik z funkcjami JS - <span style="font-weight: bold;">function.js</span>. Plik uruchamiany przez użytkownika nie jest wielce skomplikowany: Składa się on z dwóch selectów (wojewodztwa - z wypełnioną listą) oraz gminy (będzie dopiero wypełniany) Plik odpowiedz.php jest bardzo ładny :
Bardzo ważny jest nagłówek - aby był to plik XML:
Potem zwykłe zapytanie do bazy danych wybierające odpowiednie rekordy - nic szczególnego. Po zapytaniu następuje generacja XML - także nic co mogło by być bardzo szczególnym zajęciem. Nie zagłębiam się tutaj w puste znaczniki (aby zamiast <nazwa></nazwa> pisać </nazwa>) nie zajmuję się także polskimi znaczkami aby nie komplikować kodu - i muszę coś pozostawić jeszcze Wam Bardzo istotnym plikiem jest plik function.js:
Trzy skromne funkcje, a właściwie tylko dwie: jedna parsująca wynik XML na kod HTML. Dzieje sie to za pomocą new Option(Nazwa,Value), a wartości są zczytywane z odpowiedzi XML za pomocą:
Jest jeszcze funkcja "uruchamiająca" AJAXa. Najpierw prosi go o to aby wyczytał odpowiedni URL z odpowiednia opcia (?wojewodztwo) a nastepnie podczas inicjalizacji blokuje selecta gminy. Po zakonczeniu wczytywania (onSuccess) XML jest parsowany a select gminy odblokowywany. To tyle - it`s simply Nie powinno nastarczyć to kłopotu ludziom z podstawową znajomością JS, php, MySQL. P.S Proszę nie zwracać na błedy w postaci że dany powiat nie jest powiatem albo nie leży w odpowiednim województwie Ten post edytował TomASS 6.08.2006, 22:13:49 -------------------- |
|
|
2.03.2006, 09:42:16
Post
#25
|
|
Grupa: Zarejestrowani Postów: 740 Pomógł: 15 Dołączył: 23.08.2004 Skąd: Poznań Ostrzeżenie: (0%) |
@TomASS - pierwszy post, z wyjatkiem sparafrazowania definicji AJAXa i kilku linków na końcu, jest zwyklym streszczeniem dokumentacji advAJAXa napisanej przez Łukasza Lacha. Nie wnosi wiele nowego, nic nie upraszcza i z pewnoscia nie nadaje sie na artykul. Moze po malych przerobkach daloby sie z tego stworzyc haslo w wikipedi.
Twoje kolejne posty przedstawiajace przyklady zastosowania advAJAX sa juz o wiele bardziej interesujące. Mam jednak mala uwagę. Czy mógłbyś w js stosowac wcięcia? Odpowiednio sformatowany kod łatwiej się czyta. -------------------- bigZbig (Zbigniew Heintze) | blog.heintze.pl
|
|
|
2.03.2006, 09:58:22
Post
#26
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) |
Cytat(bigZbig @ 2006-03-02 09:42:16) (...) Czy mógłbyś w js stosowac wcięcia? Odpowiednio sformatowany kod łatwiej się czyta. Niestety sposób osadzania kodów źródłowych na forum za pomocą [ html ] ma wadę i nie zachowuje wcięć. Więc muszę tutaj ~TomASSa usprawiedliwić. Zostanie to prawdopodobnie poprawione w niedługim czasie. P.S. A na artykuł faktycznie to się nie nadaje. Porada zwykła i tyle. Równie dobrze mógłby być link do bloga ~anAKiNa, co innego późniejsze przykłady, one już coś wnoszą. |
|
|
2.03.2006, 10:23:38
Post
#27
|
|
Grupa: Zarejestrowani Postów: 740 Pomógł: 15 Dołączył: 23.08.2004 Skąd: Poznań Ostrzeżenie: (0%) |
Cytat(mike_mech @ 2006-03-02 10:58:22) Niestety sposób osadzania kodów źródłowych na forum za pomocą [ html ] ma wadę i nie zachowuje wcięć. Więc muszę tutaj ~TomASSa usprawiedliwić. Zostanie to prawdopodobnie poprawione w niedługim czasie. Ale [CODE] juz wciecia zachowuje wiec czy nie lepsze byloby zastosowanie tego bbcode tym bardziej, ze js to nie html, wiec nikt nie mogby zglosic uwagi, ze zastosowano niewlasciwy bbcode. edit --------------- A tak swoja droga przydalby sie jakis parser kolorujacy kod js - moze MX-BBCode? Ten post edytował bigZbig 2.03.2006, 10:28:01 -------------------- bigZbig (Zbigniew Heintze) | blog.heintze.pl
|
|
|
8.03.2006, 19:41:57
Post
#28
|
|
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 |
|
|
8.03.2006, 22:50:00
Post
#29
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
Tabelka jest już gotowa - zobacz do źródła tego pliku:
Zuważ że w kodzie JS masz tak: Kod d = $("dataTable"); Natępnie tabela jest czyszczona: Kod for (i = d.rows.length-1; i >= 0; i--) d.deleteRow(i); Później jest tworzony element <tr>: Kod tr = document.createElement("tr"); Wpisywane są do niego komórki. Początek komórki (<td>): Kod td = document.createElement("td"); Zawartość przy pomocy innerHTML: Kod td.innerHTML = record[i].childNodes[j].childNodes[0].nodeValue; Zamykamy obiekt(y) <td> oraz <tr>: Kod tr.appendChild(td); d.appendChild(tr); Różne właściwości (np. td) możesz modyfikować np w następujący sposób: Kod td = document.createElement("td");
td.noWrap="nowrap"; td.innerHTML = "dlugi tekst; tr.appendChild(td); -------------------- |
|
|
9.03.2006, 19:51:32
Post
#30
|
|
Grupa: Zarejestrowani Postów: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław Ostrzeżenie: (0%) |
Dzieki TomASS, Twoja odpowiedź była pomocna.
jednak dalej nie moge "podpiąć" całego styla z pliku .css pod tabele. próbowałem tak: Kod td.class="styltabelki"; td.style.class="styltabelki"; td.style="styltabelki"; jednak to nie działa... więc wszystkie własciwości wpisałem "ręczniene". Jest jednak problem z właściwościami, które mają w nazwie kreske (-) np: border-bottom Kod td.style.padding = "6px 15px"; to działa, ale nie to:Kod td.style.border-bottom = "1px solid #ebebe4" Ogólnie moge powiedzieć, że "zaadoptowanie" advAJAX'a do swojego projektu jest trudne dla średnio zaawansowanej osoby... podstawowym problemem jest (co zrobić tym AJAXEM, a co nie).Mam w administracji dział newsy, w którym znajduje sie spis newsów i mały formularz do edycji i dodawania nowych newsów. I tak zastanawiam sie, co zrobić tym AJAX'em.. co naprawde pomoże w pracy, a co bedzie przeszkadzało... Chciałem zrobić edycje danego newsa po dwukliknięciu na pozycje z listy... jednak narazie nie wiem, jak odświerzyć poprawioą liste... dodawanie równiez można by zrobić z wykorzystaniem AJAX'a... |
|
|
9.03.2006, 20:56:41
Post
#31
|
|
Grupa: Zarejestrowani Postów: 245 Pomógł: 4 Dołączył: 22.01.2005 Ostrzeżenie: (0%) |
z tego co się orientuje w javascripcie to zamiast:
Kod td.class="styltabelki"; Powinno być Kod td.className="styltabelki"; Pozdrawiam |
|
|
10.03.2006, 13:55:52
Post
#32
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
Cytat Mam w administracji dział newsy, w którym znajduje sie spis newsów i mały formularz do edycji i dodawania nowych newsów. I tak zastanawiam sie, co zrobić tym AJAX'em.. co naprawde pomoże w pracy, a co bedzie przeszkadzało... Chciałem zrobić edycje danego newsa po dwukliknięciu na pozycje z listy... jednak narazie nie wiem, jak odświerzyć poprawioą liste... dodawanie równiez można by zrobić z wykorzystaniem AJAX'a... Użycie ajaxa ma sens, wtedy gdy pobieramy jakieś dane i wyświetlamy je na stronie przy czym zawartość "graficzna" strony nie zmienia się - takie coś ma miejsce w przypadku np. stronicowania, robienia map czy "dynamicznych" formularzy. Generalnie staraj się używać AJAXa tam gdzie to jest pomocne (np. w automatycznym dopełnianiu formularzy), ale muisz wziąść też pod uwagę użytkowników, którzy mają wyłączony JavaScript i umożliwić im prace bez AJAXa. Oto kilka przykładów na wykorzystanie: RSS Reader dopełnianie formularza formularz hotelowy dużo fajnych przykładów Ten post edytował TomASS 10.03.2006, 13:56:36 -------------------- |
|
|
11.03.2006, 18:56:29
Post
#33
|
|
Grupa: Zarejestrowani Postów: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław Ostrzeżenie: (0%) |
Dzieki chlopaki za pomoc.. teraz już dużo mi sie rozjaśniło...
Przeglądałem przykłady zastosowania AJAX'a, bardzo dobry jest przykład menu z możliwością ręcznego sortowania. Przykład ... jest to chyba zbudowane na innym "silniku" AJAX. potrafił by ktoś zrobić coś takiego na AdvAJAX? P.S. TomASS Twój przykład z formularzem rejestrującym nie działa.. (domyślam sie, że chyba nie jest on dokończony...) |
|
|
11.03.2006, 22:58:33
Post
#34
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
Cytat Przeglądałem przykłady zastosowania AJAX'a, bardzo dobry jest przykład menu z możliwością ręcznego sortowania. Przykład ... jest to chyba zbudowane na innym "silniku" AJAX. potrafił by ktoś zrobić coś takiego na AdvAJAX? Pewnie się da - można też użyć innych klas np SAJAX. Cytat P.S. TomASS Twój przykład z formularzem rejestrującym nie działa.. (domyślam sie, że chyba nie jest on dokończony...) Sama rejestracja oczywiście, że nie działa Tutaj chodziło o walidację -------------------- |
|
|
12.03.2006, 10:25:30
Post
#35
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 15.07.2003 Ostrzeżenie: (0%) |
Bardzo ładnie, panowie
-------------------- Łukasz Lach
http://anakin.us/ |
|
|
12.03.2006, 14:11:15
Post
#36
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
Dzisiaj przeczesując czeluścia internetu natrafiłem na Dynamiczną tabelę - świetna sprawa oparta na AJAXie.
Cytat Bardzo ładnie, panowie Anakin - jeśli ktoś jeszcze nie zdążył się połapać jest autorem klasy advAJAX -------------------- |
|
|
13.03.2006, 20:53:10
Post
#37
|
|
Grupa: Zarejestrowani Postów: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław Ostrzeżenie: (0%) |
Siedze już kurde drugi dzień nad tym ajaxem i albo jestem jakis ciemny, albo nie wiem... Już nie napisze, że nie potrafie przerobić przykładu "stronnicowanie danych" tak, zeby kożystał z tabeli o innej strukturze... no ale pokolei...
Pierwsze, przez co nie moge przebrnąc to wstawieniue danych z bazy do formularza...w tym przypadku kożystałem z '.value', nie kożystałem z '.innerHTML' ponieważ w formularzu nic sie nie działo.. '.innerHTML' bez problemu wstawia dane do np <DIV id="xxx">...</DIV> ale do <INPUT type="text" name="xxx" id="xxx"> już nie wstawia, wyskakuje błąd.. plik zaladuj.js: Kod function wyswietl() { advAJAX.setDefaultParameters({ onInitialization : function(obj) { document.getElementById(obj.tag).value = "Przygotowanie..."; }, onLoading : function(obj) { document.getElementById(obj.tag).value = "Ładowanie..."; }, onSuccess : function(obj) { document.getElementById(obj.tag).value = "" + obj.responseText; }, onError : function(obj) { document.getElementById(obj.tag).value = "Error..."; } }); advAJAX.get({ url: "zaladuj.php?wartosc=naglowek", tag: "news_naglowek" }); advAJAX.get({ url: "zaladuj.php?wartosc=data", tag: "news_tresc" }); advAJAX.get({ url: "zaladuj.php?wartosc=autor", tag: "news_autor" }); advAJAX.setDefaultParameters({}); } plik zaladuj.php:
problem z tym kodem jest taki, że wrzucając zawartość pliku zaladuj.php do pola INPUT wrzuca razem ze statystykami home.pl (home dokleja je do każdje strony)... w przypadku 'innerHTML' nie ładowało tego.... Wiem, że nie jest to zbyt skomplikowany problem, jest to poprostu "wrzucanie" danych do formularza, podstawopwa sprawa, no ale jednak jest to problem..Może ktoś mi pomóc? Ten post edytował kukix 13.03.2006, 21:01:56 |
|
|
13.03.2006, 21:33:13
Post
#38
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 0 Dołączył: 23.01.2006 Ostrzeżenie: (0%) |
A jak zrobic cos w stylu loadingu ale z procentami?
Np. chodzi mi, ze mam liste mailingowa i 300 maili do rozesłania. Wpisuje tresc i naglowek, klikam Rozeslij, i chciałbym dowiadywac sie w jakim stopniu maile zostały juz rozesłane, czy to 30 maili (10%) czy tez 99% maili ? |
|
|
13.03.2006, 22:07:32
Post
#39
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
14.03.2006, 19:18:54
Post
#40
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 0 Dołączył: 23.01.2006 Ostrzeżenie: (0%) |
A moze jakis przyklad w stylu tego o co pytalem w ostatnim poscie?
Albo: 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. |
|
|
14.03.2006, 22:06:28
Post
#41
|
|
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 |
|
|
17.03.2006, 14:49:22
Post
#42
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) |
Cytat(eMartio @ 2006-03-17 10:53:26) Czy można zmusisz bibliotekę advAjax do współpracy z systemem szablonów Smarty? Jezeli tak, to poprosze o instrukcje. To wazne dla mnie... Nie za bardzo wiesz co jest grane. advAJAX nie moze wspolpracowac ze Smarty'm, poniewaz to jest JavaScript. A JavaScript ma sie nijak do Smarty'ego. Za pomoca advAJAX mozesz wyslac zadanie do skryptu php i to wlasnie ten skrypt moze korzystac ze Smarty'ego ale nie advAJAX. |
|
|
17.03.2006, 16:11:07
Post
#43
|
|
Grupa: Zarejestrowani Postów: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław Ostrzeżenie: (0%) |
Mam jeszcze taką sprawę...
Czytałem troche na stronie advAJAX o wysyłaniu formularzy no i sa tam dwa sposoby wysyłania formularzy.. jeden to Kod advAJAX.submit(document.getElementById("the_form"), {}); drugi to : Kod advAJAX.assign(document.getElementById("the_form"), {}); Z tego co wyczytałem, to ten drugi sposób działa tak, że jak "nie działa", to wysyla formularz normalnie... chciałem stosowac ten pierwszy sposób ponieważ odpala sie on dopiero po kliknięciu Submit'a, i nie trzeba go wcześniej onLoad="...".. Jak myslicie, który sposób jest lepszy i do czego jest lepszy... Co lepioej nadawało by sie na formularz do dodawania newsów w administracji...? P.S. Po przeglądnięciu pliku advajax.js zobaczyłem, że ta druga funkcja zawiera w sobie tą pierwszą, i są tam tylko dodatkowe warunki... 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ć? |
|
|
17.03.2006, 17:50:54
Post
#44
|
|
Grupa: Zarejestrowani Postów: 740 Pomógł: 15 Dołączył: 23.08.2004 Skąd: Poznań Ostrzeżenie: (0%) |
Cytat(eMartio @ 2006-03-17 18:21:45) I jak teraz z pliku index.php przesłać nowe dane do templejtu? @eMartio - cos ci sie jednak miesza. Smarty operuje na serwerze a ajax w przegladarce uzytkownika. Nie po to pobierasz dane metoda get obiektu advAjax aby te dane wysylac spowrotem na serwer w celu wrzucenia ich do szablonu smarty. Pomysl chwile zamiast sie glupio oburzac i robic przytyki mike_mechowi imputujac mu brak inteligencji. edit -------------------- 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. Ten post edytował bigZbig 17.03.2006, 17:57:12 -------------------- bigZbig (Zbigniew Heintze) | blog.heintze.pl
|
|
|
17.03.2006, 18:51:06
Post
#45
|
|
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 a gdybyśmy dali Ci na początku gotowe rozwiązanie, to prawdopodobnie trudniej by Ci było się zmotywować do poczytaniu o AJAXie 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();
-------------------- |
|
|
18.03.2006, 03:43:05
Post
#46
|
|
Grupa: Zarejestrowani Postów: 271 Pomógł: 4 Dołączył: 5.01.2005 Ostrzeżenie: (0%) |
Hmm.. ja właściwie dopiero zainteresowałem sie AJAXem, ale mam pewien problem, a mianowicie póki co mam taki prosty kodzik:
test.php
w index.php mam: Kod <script type="text/javascript"> function changeModel(p) { changeModel += p; advAJAX.setDefaultParameters({ onInitialization : function(obj) { document.getElementById(obj.tag).innerHTML = "Przygotowywanie..."; }, onLoading : function(obj) { document.getElementById(obj.tag).innerHTML = "Ładowanie..."; }, onSuccess : function(obj) { document.getElementById(obj.tag).innerHTML = "Wynik: " + obj.responseText; }, onError : function(obj) { document.getElementById(obj.tag).innerHTML = "Błąd..."; } }); advAJAX.get({ url: "test.php?id="+p, tag: "e3_div1" }); } </script> oraz poniżej: i niby wszystko ładnie, ale do mometu pierwszego wywołania, a mianowicie kiedy kliknę na link: java script:changeModel(4) wszystko ok, ale kiedy już otrzymam wynik i kliknę np. na następny changeModel(5) nic sie nie dzieje. :/ o co chodzi? Juz znalazłem.. poprawiony plik JS powinnien być bez linijki: Kod changeModel += p;
Ten post edytował chomiczek 18.03.2006, 05:45:00 -------------------- created by chomiczek
|
|
|
19.03.2006, 21:50:53
Post
#47
|
|
Grupa: Zarejestrowani Postów: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław Ostrzeżenie: (0%) |
Używam do wysyłania fomrularza AJAX'a .. wszystko jest ok, ale co zrobic, jeżeli na jednej stronie są dwa różne formularze...
Mam w <BODY ... onload="updateObjects();"> Kod function updateObjects() { advAJAX.assign($("frm_news"), { onInitialization : function(obj) {...}, onComplete : function() {...}, onSuccess : function(obj) {...}, onError : function(obj) {...} }); } Funkcja updateObjects wykionuje różne działania, które w innym formularzu nie są potrzebne, będą powodowały konflikt.. (podstawianie domyslnych wartości, resetowanie itd..)... I teraz mam inny formularz (lista newsów z checkboxem wybieram tutaj te do usunięcia)... no i jak go wysyłam submitem, to wykonuje tą funkcje updateObjects.. Jak rozwiązać tą sprawe.. drugiej funkcji updateObjects2() raczej nie można wstawić do onLoad.. myślałem, żeby wewnątrz funkcji updateObjects() podzielić kod ze względu na formularza np: Kod function updateObjects() { if (form= 'foirmularz1') { advAJAX.assign($("frm_news"), { onInitialization : function(obj) {...}, onComplete : function() {...}, onSuccess : function(obj) {...}, onError : function(obj) {...} }); } else {//inny formularz advAJAX.assign($("frm_news"), { onInitialization : function(obj) {...}, onComplete : function() {...}, onSuccess : function(obj) {...}, onError : function(obj) {...} }); } } Co wy o tym sądzicie.. może jest jkakiś inny lepszy sposób... Ten post edytował kukix 19.03.2006, 22:43:46 |
|
|
20.03.2006, 08:30:32
Post
#48
|
|
Grupa: Zarejestrowani Postów: 740 Pomógł: 15 Dołączył: 23.08.2004 Skąd: Poznań Ostrzeżenie: (0%) |
Nie latwiej zrobic osobne funckje dla obslugi kazdego formularza updateObjects1() i updateObjects2()?
-------------------- bigZbig (Zbigniew Heintze) | blog.heintze.pl
|
|
|
20.03.2006, 17:10:32
Post
#49
|
|
Grupa: Zarejestrowani Postów: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław Ostrzeżenie: (0%) |
Mam takie pytanie co do advAJAX.assign()...
Chodzi mi konkretnie o wysyłanie tablicy... mam taki form: no i teraz chciałem skryptem php wrzucić tą tablice do pętli:
no i problem jkest w tym, że z tego formularza dochodzi tablica, ale tylko z pierwszym wpisem value=1 (count($zaznacz_mnie) zwraca 1)..da sie jakoś to ominąc..? czy advAJAX.assign() "potrafi"wysyłac tablice? spotkał sie może ktoś kiedyśz takim przypadkiem? Ten post edytował kukix 20.03.2006, 21:09:41 |
|
|
21.03.2006, 08:37:53
Post
#50
|
|
Grupa: Zarejestrowani Postów: 271 Pomógł: 4 Dołączył: 5.01.2005 Ostrzeżenie: (0%) |
Hmm.. ja mam pytanko dot. tego czego lepiej użyć, które rozwiązanie jest bardziej optymalne:
1.
w odpowiednie tagi 'wklejane są' wyniki zapytania.. tylko w tym przypadku jest wysyłane aż 4 razy zapytanie do bazy danych do pliku look.php 2. Wysyłam jedno zapytanie, które zwraca mi spreparowaną stronę. W chwili obecnej jest tak, że w kilku miejscach na stronie pojawi mi się Ładowanie, jesli byłoby to jedno zapytanie to byłoby to jedno ŁADOWANIE, a strona na chwile by znikała (jesli dobrze rozumuje). Które z tych rozwiązań jest lepsze, ewentulanie może jest trzecie? W chwili obecnej potrzebuje tego do Tej strony zalinkowane są fotki na dole, ale czy mój pomysł jest ok? -------------------- created by chomiczek
|
|
|
21.03.2006, 08:55:53
Post
#51
|
|
Grupa: Zarejestrowani Postów: 740 Pomógł: 15 Dołączył: 23.08.2004 Skąd: Poznań Ostrzeżenie: (0%) |
Mozesz wyslac jedno zapytanie do serwera i odbierac wynik w postaci pliku XML. Po napisaniu parsera wyciagajacego z pliku XML poszczegolne elementy mozesz aktualizowac drzewo DOM dokumentu w kilku miejscach za jednym zamachem.
-------------------- bigZbig (Zbigniew Heintze) | blog.heintze.pl
|
|
|
22.03.2006, 11:40:18
Post
#52
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 15.07.2003 Ostrzeżenie: (0%) |
Cytat no i problem jkest w tym, że z tego formularza dochodzi tablica, ale tylko z pierwszym wpisem value=1 (count($zaznacz_mnie) zwraca 1)..da sie jakoś to ominąc..? czy advAJAX.assign() "potrafi"wysyłac tablice? spotkał sie może ktoś kiedyśz takim przypadkiem? To jest jeden w błędów wersji 1.0, będzie poprawione w 1.1. Odnośnie 1.1, będzie również możliwość wstawiania paska postępu ładowania, ale tylko w Firefoxie, póki co. Ogolnie będzie kilka nowych metod i atrybutów, zwiększających funkcjonalność całości. Planuję także wrzucić advAJAX_History, który pozwoli na tworzenie odnośników wykorzystujących advAJAXa, na które będzie reagować mechanizm historii przeglądarki, więc będzie można bez problemu korzystać z przycisków "Dalej", "Wstecz", jak również dodawać stronę do zakładek. -------------------- Łukasz Lach
http://anakin.us/ |
|
|
22.03.2006, 15:37:23
Post
#53
|
|
Grupa: Zarejestrowani Postów: 271 Pomógł: 4 Dołączył: 5.01.2005 Ostrzeżenie: (0%) |
a kiedy mozna spodziewać się wersji 1.1??
-------------------- created by chomiczek
|
|
|
22.03.2006, 22:06:28
Post
#54
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 15.07.2003 Ostrzeżenie: (0%) |
Cytat a kiedy mozna spodziewać się wersji 1.1?? Na koniec przyszlego tygodnia, prawdopodobnie. -------------------- Łukasz Lach
http://anakin.us/ |
|
|
22.03.2006, 23:12:45
Post
#55
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
Cytat Na koniec przyszlego tygodnia, prawdopodobnie. szybki jestes czekam i nieomieszkam przetestować -------------------- |
|
|
24.03.2006, 11:44:21
Post
#56
|
|
Grupa: Zarejestrowani Postów: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław Ostrzeżenie: (0%) |
Cytat(anAKiN @ 2006-03-22 23:06:28) Na koniec przyszlego tygodnia, prawdopodobnie. Przydałyby sie też jakieś ciekawe przykłady... zastosowania advAJAX'a 1.1 ... może np cośw rodzaju Sortowane menu w najprostszej wersji..., może jakiś mały czat... pozdr.... Ten post edytował kukix 24.03.2006, 14:36:01 |
|
|
25.03.2006, 03:08:42
Post
#57
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 15.07.2003 Ostrzeżenie: (0%) |
AdvancedAJAX 1.1
http://anakin.us/blog/advancedajax-11/ -------------------- Łukasz Lach
http://anakin.us/ |
|
|
25.03.2006, 09:42:19
Post
#58
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
Szkoda, że onProgress działa tylko na Mozili Bardzo fajna sprawa.
-------------------- |
|
|
27.03.2006, 09:44:02
Post
#59
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 27.03.2006 Ostrzeżenie: (0%) |
jak jest z tym "url:"
czy mozna pobierac tez dane nie z lokalnego serwera ( url: "jakislokalnyplik.php", .. ) tylko odwolujac sie url: "http://.." bo cos mi to nie dziala jak pobieram z innego |
|
|
27.03.2006, 11:35:11
Post
#60
|
|
Grupa: Zarejestrowani Postów: 188 Pomógł: 0 Dołączył: 23.05.2005 Ostrzeżenie: (0%) |
Mozesz pobierac tylko dane z serwera, z ktorego zostal wywolany skrypt (np. php). Wzgledy bezpieczenstwa .
|
|
|
28.03.2006, 19:12:11
Post
#61
|
|
Grupa: Zarejestrowani Postów: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław Ostrzeżenie: (0%) |
Cytat(anAKiN @ 2006-03-22 12:40:18) Cytat no i problem jkest w tym, że z tego formularza dochodzi tablica, ale tylko z pierwszym wpisem value=1 (count($zaznacz_mnie) zwraca 1)..da sie jakoś to ominąc..? czy advAJAX.assign() "potrafi"wysyłac tablice? spotkał sie może ktoś kiedyśz takim przypadkiem? To jest jeden w błędów wersji 1.0, będzie poprawione w 1.1. Odnośnie 1.1. Wlasnie testuje advAJAX 1.1 i chyba dalej jest problem z tymi tablicami.. pobiera mi tylko pierwszą i ostatnią wartośc z zaznaczonych pół... chyba dalej jest ten błąd.. ale jużchociaż lepiej niż przedtem... |
|
|
28.03.2006, 20:20:53
Post
#62
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 15.07.2003 Ostrzeżenie: (0%) |
Fakt. Poprawione:
http://advajax.anakin.us/opera/test4.html Cytat Szkoda, że onProgress działa tylko na Mozili sad.gif Bardzo fajna sprawa. Ze mną jak z dzieckiem To chyba jedyna implementacja na XHR która obsługuje onProgress w Operze. http://anakin.us/blog/onprogress-w-operze/ Ten post edytował anAKiN 29.03.2006, 12:55:16 -------------------- Łukasz Lach
http://anakin.us/ |
|
|
29.03.2006, 20:32:40
Post
#63
|
|
Grupa: Zarejestrowani Postów: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław Ostrzeżenie: (0%) |
OK.. teraz tablice śmigają elegancko ...
Szkoda, że onProgress działa tylko na Mozili i Operze.. w sumie to większość internautów dalej korzysta z IE... |
|
|
29.03.2006, 21:00:59
Post
#64
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
W Operze to działa połowicznie...
-------------------- |
|
|
29.03.2006, 21:31:35
Post
#65
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 15.07.2003 Ostrzeżenie: (0%) |
Cytat(TomASS @ 2006-03-29 22:00:59) W Operze to działa połowicznie... A moze konkretniej i na maila? Malo mi to mowi. Zreszta z tego co sam testowalem i kilka innych osob, onProgress w Operze dziala tak jak w Mozilli. -------------------- Łukasz Lach
http://anakin.us/ |
|
|
29.03.2006, 22:03:52
Post
#66
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
Wybacz Łukaszu moje niedoinformowanie. Otóż testowałem onProgress w ten sam dzień co się ukazała werska 1.1 i działało tylko na FF, w Operze było 4% i odrazu 100% - także napisałem, że działa 'połowicznie'. Teraz jest wszystko w prządku i działa bez zarzutu. Sorki za wprowadzenie lekkiej nutki haosu
-------------------- |
|
|
30.03.2006, 14:32:44
Post
#67
|
|
Grupa: Zarejestrowani Postów: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław Ostrzeżenie: (0%) |
A co z polskimi literami?
Wysyłając formularz funkcją advAJAX.assign() polskie litery zmieniają sie na jakieś znaczki, kwadraciki... sprawdzałem w phpmyadminie też nie wyświetlają sie polskie litery... No ale z drugiej strony znaczki dobrze wyświetlają sie przez advAJAX.get()... co z tym zrobić...? Na forum Skryptoteka.pl byl ten sam problem, ale coś nie moge tego rozwiązac.. Dałem do pliku w którym zapisuje dane z formularza ajaxa: Kod header("Content-Type: text/html; charset=iso-8859-2"); ale to nie pomaga.. Ten post edytował kukix 30.03.2006, 14:39:03 |
|
|
31.03.2006, 09:02:54
Post
#68
|
|
Grupa: Zarejestrowani Postów: 271 Pomógł: 4 Dołączył: 5.01.2005 Ostrzeżenie: (0%) |
Gdzieś wyczytałem, w tej chwili nie pamiętam źródła, że przekazując dane z php do JS należy używać UTF, aby te dane były poprawnie przekazane.
O już znalazłem: artykuł pt.: "ĄŚŹ czyli polskie ogonki w internecie" zamieszczony w magazynie INTERNET z listopada 2005r., zdaniem autora jedynym sposobem na rozwiązanie tego problemu jest UTF-16. -------------------- created by chomiczek
|
|
|
31.03.2006, 10:26:38
Post
#69
|
|
Grupa: Zarejestrowani Postów: 402 Pomógł: 0 Dołączył: 20.01.2003 Ostrzeżenie: (0%) |
z moich zabaw z komunikacją Flash <-> JS <-> HTML wynika ze to mozwe byc prawda. Jak na razie tylko z kodowaniem w Operze nie mialem klopotow, ale Firefox i MSIE maja ogromna "dziure" w kodowaniu znakow na linii komunikacji z JS (w samym JS jest ok, ale przesylanie danych do JS sie krzaczylo) :-/
polowicznym rozwiazaniem bylo wprowadzenie przeze mnie "translatora" (zmieniamy polskie czcionki na jakies zdefiniowane prez nas ciagi, przesylamy tresc do JS a JS wprowadza nam PL znaczki w miejscu wprowadzonych przez nas znacznikow). Sęk w tym że ta ostatnia częśc (przetwarzanie w JS) może w widoczny sposob spowalniać wyświetlenie załadowanej treści, zwłaszcza gdy mamy do czynienia z długimi tekstami. -------------------- |
|
|
31.03.2006, 10:32:47
Post
#70
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) |
Do przesyłania różnych dziwnych znaczków (w tym polskich znaków diaktrycznych) przez url jest w js taka funkcja jak encodeURIcomponent()
|
|
|
1.04.2006, 16:13:51
Post
#71
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 3 Dołączył: 29.07.2005 Skąd: Szczebrzeszyn Ostrzeżenie: (0%) |
nie wiem czy to jest błąd czy przemyślana sytuajcja ale czemu przy wysyłniu formularza w advAjax (za pomocą ajax.assign) nie wysyła pola <input type="submit" /> ?
btw. co do polskich znaków wysłanych za pomocą ajaxa to poradziłem sobie w następujący sposób: poźniej za pomocą Creole wstawiam dane do postgresa, bez mb_convert_encoding nie wstawiał mi danych, wywalał błędy o złych znakach. dziwna jest tylko ta zmiana z UTF-8 na UTF-8 Ten post edytował pawel_k 1.04.2006, 17:08:02 |
|
|
1.04.2006, 20:56:57
Post
#72
|
|
Grupa: Zarejestrowani Postów: 271 Pomógł: 4 Dołączył: 5.01.2005 Ostrzeżenie: (0%) |
a ja właśnie sprawdziłem kwestie kodowania i nie trzeba stosować UTF-16, wystarczy UTF-8, plik w którym używam AJAXa jest kodowany UTF-8, plik towrzący XMLa jest kodowany w UTD-8 oraz sam wygenerowany XML jest zakodowany w UTF-8 i nie ma żadnych problemów
-------------------- created by chomiczek
|
|
|
2.04.2006, 18:55:34
Post
#73
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 0 Dołączył: 5.09.2003 Skąd: Kielce Ostrzeżenie: (0%) |
Cytat(Radarek @ 2006-03-27 12:35:11) Mozesz pobierac tylko dane z serwera, z ktorego zostal wywolany skrypt (np. php). Wzgledy bezpieczenstwa . Da się to jakoś ominąć zmieniając ustawienia przeglądarki (np. w firefox poprzez about:config)? -- edit -- Znalazłem, ale pewnie działa tylko w przeglądarkach z silnikiem Gecko. Dobre i to. A oto kod: Kod try { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); } catch (e) { alert("Permission UniversalBrowserRead denied."); } Ewentualnie w about:config ustawić signed.applets.codebase_principal_support na true Ten post edytował Zepco 2.04.2006, 20:19:50 -------------------- Jak stworzyć szybko działającą aplikację wolną od błędów?
Tego nie wiedzą nawet najstarsi indianie... :D Oprogramowanie jest jak katedra - budujesz, budujesz, budujesz, a potem... modlisz się! |
|
|
2.04.2006, 19:10:53
Post
#74
|
|
Grupa: Zarejestrowani Postów: 271 Pomógł: 4 Dołączył: 5.01.2005 Ostrzeżenie: (0%) |
Cytat(Zepco @ 2006-04-02 17:55:34) Da się to jakoś ominąć zmieniając ustawienia przeglądarki (np. w firefox poprzez about:config)? Wystarczy tylko przeczytać tutaj masz odpowiedź co i jak, a także informacje o ewentualnych zmianach w about:config Ten post edytował chomiczek 2.04.2006, 19:11:37 -------------------- created by chomiczek
|
|
|
7.04.2006, 19:22:08
Post
#75
|
|
Grupa: Zarejestrowani Postów: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław Ostrzeżenie: (0%) |
Cytat(pawel_k @ 2006-04-01 17:13:51) co do polskich znaków wysłanych za pomocą ajaxa to poradziłem sobie w następujący sposób:
Witam. Jak to jest z tymi polskimi literami...? Podczas zapisywania formularza przez advAJAX.assign() i wyświetlania przez advAJAX.get() to jest ok.. ale już na "zwykłej" stronie nie.. jak zmienie phpmyadminem wpis w bazie.. tzn dodam polskie litery to advAJAX.get() wyświetla krzaczki... Natomiast dodane w phpmyadminie polskie litery wyświetlają sie dobrze na "zwykłej" stronie... Jak rozwiązać ten problem.. i na jakim etapie.. zapisu, czy odczytu danych z bazy...? Prosze o pomoc.. wszystkie posty na temat polskich liter nic mi nie mówią... Ten post edytował kukix 7.04.2006, 19:23:25 |
|
|
12.04.2006, 22:09:18
Post
#76
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
Hej. Może by tak kolejny przykładzik kogoś zainteresował ?
Bardzo często przy moich projektach spotykam się z proźbą klienta o możliwość 'kolorowania' poszczególnych wierszy w tabeli (rekordów). Fajna sprawa - klient np. zaznacza jakieś ważna dla drugiej strony rekordy na czerwono i już jest wiadomo o co chodzi. Jednak jest (był) mały problem - po każdorazowym pokolorowaniu wiersza trzeba było odświeżyć stronę. Naszczęście z pomocą mi przyszedł mi AJAX Oto co wykombinowałem: Potrzebujemy oczywiście advAJAX. Struktura bazy danych:
Teraz, gdy mamy odpowiednią tabelę dla naszych rekordów i w niej pole `Kolor` możemy zabrać się za wyświetlenie tychże rekordów. Plik proba.php :
Chyba nic nazwyczajnego, proste wyswietlanie rekordow - idziemy dalej.... plik paleta.php , który odpowiedzialny jest za pobranie koloru z palety:
za 'dynamiczne' pokolowanie tabelki:
oraz zapisanie do bazy danych: Cały plik wygląda następująco:
Pozostaje już tylko plik zapisujacy dane do bazy. zapisz_kolor.php: Jestem pewnien, że dla Was to pestka Gotowy i działający przykład można zobaczyć tutaj. Powodzenia Ten post edytował TomASS 13.04.2006, 08:01:26 -------------------- |
|
|
13.04.2006, 07:08:50
Post
#77
|
|
Grupa: Zarejestrowani Postów: 740 Pomógł: 15 Dołączył: 23.08.2004 Skąd: Poznań Ostrzeżenie: (0%) |
@TomASS -> ciekawy przyklad - lubie zabawy z kolorami - tylko, co Ty zrobiles, ze sie Twoj post tak rozjechal?
-------------------- bigZbig (Zbigniew Heintze) | blog.heintze.pl
|
|
|
13.04.2006, 14:32:56
Post
#78
|
|
Grupa: Moderatorzy Postów: 36 477 Pomógł: 6301 Dołączył: 27.12.2004 |
Z racji faktu, iż powstał artykuł na podstawie topicu, topic zostaje przeniesiony na właściwe forum.
Dodatkowo, zaraz utworzę topic na XML, AJAX , w którym będą zbierane linki do artykułów, by mieć wszystko pod ręką -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
17.04.2006, 18:54:51
Post
#79
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 12.07.2003 Skąd: Białystok Ostrzeżenie: (0%) |
Witam!
Muszę przyznać, iż idea AJAXu bardzo mnie zainteresowała. W ogóle postanowiłem nie stać w miejscu, a zrobić krok do przodu i mała przesiadkę technologii. Czas odejść od schematu prosty HTML (tabelki) + prosty JS (używany właściwie symbolicznie) + PHP4 + MySQL. Postanowiłem zacząć porządnie się edukować w celu wykorzystania technologii XHTML + AJAX + PHP5 (+ MySQL oczywiście). Mam jednakże kilka pytań bardziej ideologicznych niż technicznych (te pewnie będą później ). A mianowicie: 2. Troszeczkę nie rozumiem idei przedstawionej w przykładzie "php Solutions - Przykład 2. - Stronicowanie danych". O ile dobrze wywnioskowałem, to jest wysyłane zapytanie o odpowiednie dane, następnie są one pobierane z bazy i formowane w ładny i zgrabny XML, przesyłane na stronę i prezentowane w postaci tabelki. Dlaczego więc na poziomie pobierania danych z bazy nie upakować ich od razu w tabelkę, przesłać na stronę wyświetlić? Dlaczego stosujemy fazę pośrednią w postaci XMLa? Z góry dziękuję za wytłumaczenie mi tych kwestii, będę wdzięczny . Wycialem elementy nie majace nic wspolnego z tematem - NuLL Ten post edytował NuLL 17.04.2006, 21:46:36 -------------------- Pozdrawiam,
MarcZ |
|
|
17.04.2006, 21:54:11
Post
#80
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
Cześć
ad 2 skor pyt 1 zostało wycięte Załóżmy, że chcesz wykorzsytać plik generujący XML nie tylko do wstawiania danych do tabelek, ale ten sam plik chcesz wykorzystac gdzieś indziej - po co robić dwa razy tan sam plik tylko z różnym sposobem wyświetlania plików? Jeśli chciałbyś zmienić wygląd tabelki to po co ingerować w sposób przesyłu tych danych? XML jest jednym ze standardów do konwersji i przesyłania danych (tak chyba to można w skrócie napisać). Zarówno php jak i JavaScript posiadają mechanizmy do 'obróbki' takich danych. Powodzenia i wytrwania w postanowieniach -------------------- |
|
|
18.04.2006, 21:28:12
Post
#81
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 12.07.2003 Skąd: Białystok Ostrzeżenie: (0%) |
dzięki za odpowiedź
-------------------- Pozdrawiam,
MarcZ |
|
|
29.05.2006, 10:29:20
Post
#82
|
|
Grupa: Zarejestrowani Postów: 600 Pomógł: 2 Dołączył: 1.09.2002 Skąd: Wrocław Ostrzeżenie: (0%) |
Witam. Tak ostatnio próbowałem udoskonalić mój skrypt z ajax'em...
mam taki kawałek kodu:
no i nie wiem, czy znalazłem jakiś błąd, czy coś źle robie... ale jak zamiast lini ("id_ankieta" : ""+id_ankieta+"",) dam ( "id_ankieta" : id_ankieta,) to skrypt wywala błąd i wszystko staje... pozatym w przykładzie Anakina z listą wyników w pliku 2.js jest kod:
czy te paramtery nie powinny być poprawnie podane w części "parameters : {"... tutaj też nie pojedzie: (p : currentPage,) tylko (p : ""+currentPage+"",) ... Ten post edytował kukix 29.05.2006, 10:31:39 |
|
|
29.05.2006, 14:04:20
Post
#83
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
1. pytanie:
ja to robię tak:
2. pytanie - tak wg. mnie powinno to być w opcji patamteteres, w którymś ze swoich przykładów też tak mam (czyli paramtery w linijce url), ale już nie będę poprawiać aby nie zrobić bałaganu. -------------------- |
|
|
14.02.2007, 01:52:47
Post
#84
|
|
Grupa: Zarejestrowani Postów: 157 Pomógł: 0 Dołączył: 12.02.2007 Skąd: Zielona Góra Ostrzeżenie: (0%) |
Powiem szczerze ten artykuł tak naprawdę zaciemnia sprawę AJAX'a niż ją rozjaśnia ja się właśnie uczę programowania z wykorzystaniem tej technologii (zgodnie z tym co wyżej napisane jest to JS rozszerzony o parę możliwości). Co AJAX potrafi, ano wiele potrafii . Może zacznę od tego, że gdy zaczynałem przygodę z WWW uważałem aplikacje internetowe za zwykłe ścierwo i nic interesującego, sprawa zmieniła się gdy spotkałem się z AJAX'em. Dla mnie rewela, programista aplikacji okienkowych pod Linuxa i pod Windows programujący w JAVA i C++ czuje się jak w domu. Oczywiście AJAX nie zapewnia takich samych możliwosci jak język C++. Chodzi oto iż technologia AJAX pozwala na zrealizowanie takiej aplikacji w pełni pod przeglądarkę, która będzie działać podobnie jak ta windowsowa "zwykła" aplikacja. AJAX zapewnia Drag'n'Drop (przeciągnij i upuść) co pozwala tworzyć bardziej intujcyjne apliakcje, pozwala na tworzenie aplikacji wielowątkowych... Można by powiedzieć że AJAX to rozwiązanie wielu problemów związanych z aplikacjami internetowymi. Oczywiście AJAX ma i swoje wady i zalety. Źle użyty raczej skomplikuje działanie strony... AJAX ze względu na swoje działanie stwarza problem z przyciskiem wstecz w przeglądarce, gdyż raz dokonana zmiana na stronie nie zostanie naprawiona poprzez kliknięcie wstecz. Więc programista w przypadku AJAX'a musi dodatkowo obsłużyć błędy z tym związane... pokazywanie artykułu o AJAX'ie który ma rozświetlić do czego służy AJAX i oprzeć go na klasach mija się z celem...
Bo nie wiem czy to powyższe wywołanie wygląda prościej niż to
Z drugiej strony to jest forum php to może dlatego większość osób woli ten pierwszy zapis :roll2: Jeśli kogoś uraziłem przepraszam.... Ale mamy wolność słowa to sądzę że nikt się nie obraził P.S. Sorki za ten HTML ale nie wiedziałem jak dodać kod z JS Ten post edytował yaotzin 14.02.2007, 12:16:16 -------------------- ------
Per Aspera Ad Astra |
|
|
14.02.2007, 02:10:10
Post
#85
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) |
|
|
|
14.02.2007, 12:11:17
Post
#86
|
|
Grupa: Zarejestrowani Postów: 157 Pomógł: 0 Dołączył: 12.02.2007 Skąd: Zielona Góra Ostrzeżenie: (0%) |
...?!? Najbardziej to Ty żeś tę sprawę zaciemnił. Ajax nie jest żadnym językiem. No tak AJAX to technologia służąca tworzeniu interaktywnych aplikacji internetowych łącząca w sobie zalety JS i XML :] -------------------- ------
Per Aspera Ad Astra |
|
|
23.02.2007, 13:40:31
Post
#87
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
Dzięki za uwagi!
Cytat Bo nie wiem czy to powyższe wywołanie wygląda prościej niż to Może prościej - co nie znaczy lepiej
jest bezpieczniejszy - przy pomocy takiego zapisu klasa advAJAX filtruje dane (tutaj zmienne id_ankieta) coś ala mysql_escape_strings z php. Cytat AJAX ze względu na swoje działanie stwarza problem z przyciskiem wstecz w przeglądarce, gdyż raz dokonana zmiana na stronie nie zostanie naprawiona poprzez kliknięcie wstecz. Więc programista w przypadku AJAX'a musi dodatkowo obsłużyć błędy z tym związane Klasa advAJAX, o ile się nie mylę posiada mechanizm przeciwdziałający temu problemowi. Ten post edytował TomASS 23.02.2007, 13:44:12 -------------------- |
|
|
28.02.2007, 18:55:05
Post
#88
|
|
Grupa: Zarejestrowani Postów: 157 Pomógł: 0 Dołączył: 12.02.2007 Skąd: Zielona Góra Ostrzeżenie: (0%) |
Dzięki za uwagi! Może prościej - co nie znaczy lepiej
jest bezpieczniejszy - przy pomocy takiego zapisu klasa advAJAX filtruje dane (tutaj zmienne id_ankieta) coś ala mysql_escape_strings z php. Klasa advAJAX, o ile się nie mylę posiada mechanizm przeciwdziałający temu problemowi. Nie będę się spierał w końcu dopiero się uczę. PZDR Ale masz rację i tu się zgodzę, jest bezpieczniejszy.... Ten post edytował yaotzin 28.02.2007, 18:56:14 -------------------- ------
Per Aspera Ad Astra |
|
|
2.03.2007, 15:47:44
Post
#89
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 0 Dołączył: 18.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) |
Cytat No tak AJAX to technologia AJAX to też nie technologia Przeczytaj opis na tej stronie to zobaczysz co to jest -------------------- Program TV, Sukces internetowy, Forum dla administratorów stron
|
|
|
3.03.2007, 13:58:15
Post
#90
|
|
Grupa: Zarejestrowani Postów: 157 Pomógł: 0 Dołączył: 12.02.2007 Skąd: Zielona Góra Ostrzeżenie: (0%) |
AJAX to też nie technologia Przeczytaj opis na tej stronie to zobaczysz co to jest Cytat AJAX = Asynchronous JavaScript and XML AJAX is not a new programming language, but a technique for creating better, faster, and more interactive web applications. With AJAX, your JavaScript can communicate directly with the server, using the JavaScript XMLHttpRequest object. With this object, your JavaScript can trade data with a web server, without reloading the page. AJAX uses asynchronous data transfer (HTTP requests) between the browser and the web server, allowing web pages to request small bits of information from the server instead of whole pages. The AJAX technique makes Internet applications smaller, faster and more user-friendly. AJAX is a browser technology independent of web server software. żródło: http://www.w3schools.com/ajax/ajax_intro.asp I zamykam temat czy to jest technologia czy nie... czy to jest może jakiś model... wypowiedziałem sie na temat artykułu a nie informacji w Wikipedii... Ale cieszę się że wszyscy uczą sie używać www.google.pl pierwsza z góry pozycja to informacja w Wikipedii o AJAX. ja podeślę jeszcze kilka: http://es.wikipedia.org/wiki/AJAX http://en.wikipedia.org/wiki/Ajax_(programming) http://ru.wikipedia.org/wiki/AJAX http://nl.wikipedia.org/wiki/Asynchronous_JavaScript_and_XML http://www.masternewmedia.org/interface_de...ax_20050728.htm http://www.icesoft.com/products/icefaces.html Dodam jeszcze kilka źródeł: "AJAX i PHP" "Ajax w akcji" "Ajax. Zaawansowane programowanie" wydawnictwa Helion PZDR.... Ten post edytował yaotzin 3.03.2007, 14:09:30 -------------------- ------
Per Aspera Ad Astra |
|
|
12.12.2007, 19:58:43
Post
#91
|
|
Grupa: Zarejestrowani Postów: 64 Pomógł: 0 Dołączył: 4.01.2006 Ostrzeżenie: (0%) |
jak dla mnie to artykul napisany malo zrozumiale, gdybym nie przeczytal w nastronach developer.mozilla o ajax to bym praktycznie nic nie zrozumial o co chodzi z XMLHttpRequest()
|
|
|
22.12.2008, 07:48:09
Post
#92
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 22.12.2008 Ostrzeżenie: (0%) |
Jakie zdziwienie wszystkich ogarnęło... Jakby AJAX powstał wczoraj...
Dobry artykuł. Na pewno się przyda, nie którym osobą. Z tego co mi wiadomo to naprawdę bardzo mało osób zna ten język. Bardziej jest popularny JS, ale moim skromnym zdaniem lepszy jest AJAX. |
|
|
22.12.2008, 11:08:03
Post
#93
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Zanim coś powiesz, zastanów się 3 razy...
Cytat Bardziej jest popularny JS, ale moim skromnym zdaniem lepszy jest AJAX. AJAX nie jest napędzany przez JS? :| Nie nabijaj postów stwierdzeniami nijak mającymi się do rzeczywistości. -------------------- ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
22.12.2008, 12:26:14
Post
#94
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) |
Cytat AJAX nie jest napędzany przez JS? :| AJAX nie jest napędzany przez JS. AJAX to najzwyklejszy na świecie JS - i nic więcej.Stwierdzenie, że AJAX to coś innego niż JS to jakby stwierdzić, że przykładowo biblioteka curl to co innego niż PHP. |
|
|
22.12.2008, 13:16:03
Post
#95
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Cytat AJAX to najzwyklejszy na świecie JS No jak nie jest? Jeśli chodzi o np. IE, to tam już nie jest sam JS, a kontrolka ActiveX, która musi być przez coś obsługiwana. Cytat że przykładowo biblioteka curl to co innego niż PHP. Owszem, coś innego. -------------------- ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
22.12.2008, 13:47:17
Post
#96
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) |
Cytat Owszem, coś innego. Chodziło mi o to, że przykładowy CURL to poprostu "fragment" języka, podobnie jak zestaw funkcji z rodziny strings czy array. Mając plik .php, w którym są wykorzystywane elementy tej biblioteki nadal mówi się jednak "skrypt php", nie "skrypt curla". W przypadku JS i AJAX jest tak samo.Cytat Jeśli chodzi o np. IE, to tam już nie jest sam JS, a kontrolka ActiveX No tak. W IE... w IE to się wiele różnych rzeczy dzieje Chodzi o fakt, że nazwanie AJAXa innym językiem niż JS (czy też technologią) jest poprostu błędem. |
|
|
22.12.2008, 14:14:41
Post
#97
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
A to to się zgodzę.
Swoją drogą - ad. tematu - to z AJAX robi się ostatnio technologię od wszystkiego - DHTML = AJAX, zmiana przez JS = AJAX... Wśród tzw. szarych owieczek JS = AJAX... -------------------- ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
23.12.2008, 04:43:09
Post
#98
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 22.12.2008 Ostrzeżenie: (0%) |
No dobrze mogę się zgodzić, ale jednak AJAX się trochę różni. Może źle się wyraziłem.
|
|
|
23.12.2008, 08:12:59
Post
#99
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) |
Czym się różni?
|
|
|
23.12.2008, 23:31:33
Post
#100
|
|
Grupa: Zarejestrowani Postów: 1 012 Pomógł: 109 Dołączył: 26.09.2003 Skąd: nexis.pl Ostrzeżenie: (0%) |
AJAX nie jest napędzany przez JS. AJAX to najzwyklejszy na świecie JS - i nic więcej. I tutaj się niestety mylisz, ponieważ AJAX najczęściej jest obsługiwany za pomocą JavaScript, ale może to być dowolny inny język skryptowy np. Visual Basic (VBScript) albo JScript. Kluczowym elementem AJAX zdaje się być obiekt XMLHttpRequest. Ten post edytował nexis 23.12.2008, 23:32:25 -------------------- |
|
|
Wersja Lo-Fi | Aktualny czas: 5.06.2024 - 21:16 |