![]() |
![]() ![]() |
![]() |
![]()
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 :/
|
|
|
![]()
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 -------------------- |
|
|
![]()
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!
|
|
|
![]()
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ć ![]() 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 -------------------- |
|
|
![]()
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
|
|
|
![]()
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ą. |
|
|
![]()
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
|
|
|
![]()
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 |
|
|
![]()
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); -------------------- |
|
|
![]()
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... |
|
|
![]()
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 |
|
|
![]()
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 -------------------- |
|
|
![]()
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...) |
|
|
![]()
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 ![]() ![]() -------------------- |
|
|
![]()
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/ |
|
|
![]()
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 ![]() -------------------- |
|
|
![]() ![]()
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 |
|
|
![]()
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 ? |
|
|
![]()
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%) ![]() ![]() |
![]()
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. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 14:49 |