Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy warto się uczyć AJAX'a?
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Mefiuu
Witam. Od pewnego czasu nurtuje mnie pytanie, czy warto się uczyć jeszcze AJAXa? Chciałem zacząć wprowadzać na stronę bardziej interaktywne skrypty, dlatego mam zamiar pouczyć się JavaScript. Jednak ucząc się JavaScript wypadałoby nauczyć się też dobrze jQuery. Z Wikipedii wiem, że jQuery jest biblioteką AJAXa. Dlatego chciałem zapytać, czy po nauce JavaScriptu uczyć się czystego AJAXa bo może się przydać, lub mogą być pomocne podstawy do nauki jQuery, czy od razu się brać za jQuery i wiedza o AJAXie nie będzie mi potrzebna do jQuery? Mam nadzieję, że zostałem dobrze zrozumiany winksmiley.jpg
kreciko
Czytałeś bez zrozumienia te teksty. JQuery jest frameworkiem javascripta.(tak samo jak zend jest frameworkiem php). AJAX jest dodatkiem(kolejną funkcją/biblioteką) javascripta, a także jQuery. Moim zdaniem warto się uczyć - bo to jest bardzo przyszłościowe i dobrze opłacalne. Bez znajomości javascripta nie nauczysz się jQuery. Jak się nauczysz jQuery będziesz umiał javascripta. Znając jQuery nie musisz umieć AJAX-a. Mam nadzieję, że wytłumaczyłem.
#luq
Całe te promowania wyrażenia Ajax zamieszało nieco w głowach młodym adeptom sztuki JS. A na moim blogu chyba już od miesiąca leży w szkicu wpis pt "Ajax mity"... Ale odbiegam od tematu.

AJAX to JS, w głównej mierze. AJAX bez JavaScripta nie ma prawa istnieć (pewno we Flashu jest obiekt XHR, zgaduje bo nie zajmuje się Flashem, ale Flash/Action Script także bazuje na ECMAScript`ie, więc można w pewnym sensie powiedzieć, że to to samo). Wszyscy którzy nie zagłębili się w temat Ajax uparcie twierdzą, że Ajax == obiekt XMLHttpRequest, co jest oczywiście błędem. Ajax to głownie idea, sposób pisania w którym coś jest ładowane/sprawdzane/wysyłane asynchronicznie. To może być obiekt XHR, ramka czy stworzenie obiektu Image i dodanie mu właściwości .src przez co wysłany zostanie request. Bardziej chodzi o koncepcję, bo narzędzia były dostępne przed wysunięciem samego terminu AJAX.

Co co jQuery to jest to framework dla JS`a zawiera oczywiście funkcję ułatwiające operowanie obiektem XHR. Nazwanie jQ biblioteką Ajax to przesada jak nie głupota. jQuery to jedynie wspomagacz, dzięki niemu możesz coś napisać mniejszym nakładem sił jak i czasu ale wszystko równie dobrze zrobisz w czystym JS`ie.

Co do kolejności nauki.
JavaScript (ECMAScript, BOM, DOM) -> czysty Ajax -> jQuery

Taka kolejność jest jak najbardziej poprawna, oczywiście można pominąć czystego Ajax`a ale moim zdaniem pominięcie tego elementu skutkuje potem myśleniem "Aha Ajax to $.load, $get ,$.getJSON, $.post i $.ajax". Natomiast pominięcie pierwszego elementu to już katastrofa (przynajmniej ECMAScript`a trzeba znać i wiedzieć co to DOM).

@up
Cytat
Jak się nauczysz jQuery będziesz umiał javascripta

No właśnie nie...

Cytat
Znając jQuery nie musisz umieć AJAX-a

Też nie, bo Ajax to nie tylko XHR.
kreciko
Cytat(#luq @ 21.08.2010, 15:20:28 ) *
A na moim blogu chyba już od miesiąca leży w szkicu wpis pt "Ajax mity"...

No właśnie szkic... Poza tym chyba nie pozwalasz googlom indeksować Twoich utworów pisanych proząsmile.gif

Cytat(#luq @ 21.08.2010, 15:20:28 ) *
No właśnie nie...

Dlaczego? jQuery to framwork javascripta, więc będzie musiał się przy okazji nauczyć js. Jak wyglądają zmienne, tablice, jak się na nich operuje - w js i jQ to wygląda tak samo. Różnica jest w odwoływaniu się do elementów DOM.

Cytat(#luq @ 21.08.2010, 15:20:28 ) *
Też nie, bo Ajax to nie tylko XHR.

Chyba źle mnie zrozumiałeś, albo ja źle napisałem. Może używać tych funkcjonalności jQuery, które nie dotyczą AJAX-a.


Odnośnie tej biblioteki AJAX-a, to tak jest napisane na wikipedii. może dlatego autor wątku tak napisał.:
http://pl.wikipedia.org/wiki/AJAX#Biblioteki_AJAX

Mefiuu@
http://pl.wikipedia.org/wiki/Dyskusja:AJAX
Tutaj częściowo jest napisane, dlaczego warto używać AJAX-a
erix
Cytat
Dlaczego? jQuery to framwork javascripta, więc będzie musiał się przy okazji nauczyć js. Jak wyglądają zmienne, tablice, jak się na nich operuje - w js i jQ to wygląda tak samo.

Cytat
Bez znajomości javascripta nie nauczysz się jQuery. Jak się nauczysz jQuery będziesz umiał javascripta

Bullshit. Słyszałem o osobach, które w jQuery potrafiły pisać wymiatające aplikacje, a w czystym JS ani be, ani me. Tylko że w pewnych przypadkach to po prostu wychodzi. A najbardziej jest widoczne, gdy trzeba napisać jakąś małą wstawkę. To wtedy pakują całe jQ. :/

Cytat
Ajax to głownie idea, sposób pisania w którym coś jest ładowane/sprawdzane/wysyłane asynchronicznie. To może być obiekt XHR, ramka czy stworzenie obiektu Image i dodanie mu właściwości .src przez co wysłany zostanie request. Bardziej chodzi o koncepcję, bo narzędzia były dostępne przed wysunięciem samego terminu AJAX.

To jeszcze nic; najgorsze jest mylenie AJAX z DHTML. Jak coś się rusza, animuje, znika/pokazuje = AJAX. Nie wiem, kto takie herezje sieje.

#luq
Cytat(kreciko @ 21.08.2010, 15:45:36 ) *
No właśnie szkic...

Po prostu nie mam czasu, myślnik, nie chce mi się biggrin.gif

Cytat
Poza tym chyba nie pozwalasz googlom indeksować Twoich utworów pisanych proząsmile.gif

Hę?

Cytat
Dlaczego? jQuery to framwork javascripta, więc będzie musiał się przy okazji nauczyć js. Jak wyglądają zmienne, tablice, jak się na nich operuje - w js i jQ to wygląda tak samo. Różnica jest w odwoływaniu się do elementów DOM.

Zaczynając od jQuery nie będziesz wiedział jak się buduje własną klasę w JS`ie a można na kilka sposobów (wzorzec fabryki, konstruktora, prototypu...). Każdy ma swoje plusy i minusy. Wątpię, że ktoś umiejąc nawet na zaawansowanym poziomie w jQ nigdy nie liznowszy JS`a wiedział, że można np. dodawać metody do obiektów standardowych np.
Kod
Array.prototype.echo = function(){
    alert( this[0] );
}

var arr = [ 1, 2, 3 ];
arr.echo();

Domniemam też, że taki ktoś nie będzie wiedział, że w takim przypadku, tak naprawdę ta metoda jest właściwością i lecąc pętlą for in znajdzie tam obiekt klasy Function, bo w JS nie ma przecież funkcji, bo to język w pełni obiektowy. Same smaczki składniowe będą nie jasne, no bo przecież w JS, coś takiego jest jak najbardziej dozwolone:
Kod
var foo = {
   a:1,
   b:2,
   c:function(){
       return 3
   }
};

alert( foo['c']() );


Wierz mi że mógłbym podać takich przykładów sporo...
everth
@#luq: Problem jest taki że sam JS jest dosyć prosty - tylko jego implementacje są krzywe. Głównie do omijania tego problemu służy jQuery
kreciko
Cytat(#luq @ 21.08.2010, 16:08:37 ) *
Po prostu nie mam czasu, myślnik, nie chce mi się biggrin.gif

Żeby mi się chciało, jak mi się nie chce.

Cytat(#luq @ 21.08.2010, 16:08:37 ) *
Hę?

Nieważne. Po prostu wpisałem w google ajax site:luq.wordpress.com i nic mi nie wyskoczyło. Ale jak się wpisze luq.wordpress.com to już się pokazuje calkiem sporo rzeczy.

Cytat(#luq @ 21.08.2010, 16:08:37 ) *
Wierz mi że mógłbym podać takich przykładów sporo...

Wierzę i widzę, że mam jeszcze spore braki. Dzięki.
#luq
Cytat
Nieważne. Po prostu wpisałem w google ajax site:luq.wordpress.com i nic mi nie wyskoczyło. Ale jak się wpisze luq.wordpress.com to już się pokazuje calkiem sporo rzeczy.


luq10.wordpress.com winksmiley.jpg

Cytat(everth @ 21.08.2010, 16:28:18 ) *
@#luq: Problem jest taki że sam JS jest dosyć prosty - tylko jego implementacje są krzywe. Głównie do omijania tego problemu służy jQuery

Oczywiście zgodzę się z tym, że JS jest ogólnie prosty jak i zresztą fajny, bo to mój ulubiony język smile.gif

To może inaczej powiem. Ostatnio pracuje pod Titanium i piszę taką dość prostą aplikację pod Androida oczywiście wszystko w JavaScript`cie. Nie jest to jakoś szczególnie skomplikowane bo API jest dość przyjemne, aczkolwiek całe środowisko nie jest jeszcze na tym stopniu rozwoju, że wszystko działa w trymiga, a debugowanie też to nie jest to co "odpalam FireBug`a i patrze". Uważam, że na pewno osoba która wychowała się jedynie na jQuery umiała się w tym odnaleźć tak szybko jak taka która pisała coś w czystym JS`ie.

To nie jest dobre wychować się na frameworku a nie zacząć od języka.
Mefiuu
Witam ponownie. Dziękuję za wyczerpujące informacje oraz duże zainteresowanie tematem - to na prawdę pomaga i motywuje do działania skoro wie się już co i jak winksmiley.jpg

@#luq:
Cytat
Co do kolejności nauki.
JavaScript (ECMAScript, BOM, DOM) -> czysty Ajax -> jQuery


Tak właśnie myślałem o takiej kolejności, jednak chciałem się upewnić w swoich działaniach.

Cytat
To nie jest dobre wychować się na frameworku a nie zacząć od języka.


Tak, tak, wiem o tym, dlatego w PHP też na razie uczę się języka, frameworków się nie "tykam" .



@erix:

Pisałeś że nie raz gdzieś trzeba zrobić małą wstawkę i wtedy ludzie "wychowani" na samym jQuery nie robią tego w JS tylko właśnie w jQ. Czy zachodzi czasem potrzeba w codziennej pracy programisty aby wstawić coś w totalnie czystym AJAX'ie?


@kreciko:
Cytat
Odnośnie tej biblioteki AJAX-a, to tak jest napisane na wikipedii. może dlatego autor wątku tak napisał.:
http://pl.wikipedia.org/wiki/AJAX#Biblioteki_AJAX


Trafiłeś - opierałem się na Wikipedii. Gość od UTK nie raz przed nią przestrzegał, a teraz wiem, że miał dużo racji winksmiley.jpg



Dziękuję za pomoc i w najbliższym czasie przerobię książkę o JS, później o AJAX'ie a następnie o jQuery, wzbogacę to internetową literaturą i będę w tym dobry winksmiley.jpg dzięki jeszcze raz za nakierowanie.
erix
Cytat
Pisałeś że nie raz gdzieś trzeba zrobić małą wstawkę i wtedy ludzie "wychowani" na samym jQuery nie robią tego w JS tylko właśnie w jQ. Czy zachodzi czasem potrzeba w codziennej pracy programisty aby wstawić coś w totalnie czystym AJAX'ie?

Nope, bo to mordęga. winksmiley.jpg Ale jeśli chodzi o np. pisanie dodatków do programów (UserJS, gdzie piszesz pod konkretny soft), czy oskryptowanie środowisk embedded (spróbuj pisać widgety w JS na Windows Mobile winksmiley.jpg - co ciekawe, IE na WM ma normalne XHR), to wtedy nie ma sensu załączać całego liba, tylko się klepie w czystym. winksmiley.jpg
Mefiuu
Hmmm... czyli jeżeli dobrze teraz rozumiem to AJAX'a warto umieć przed rozpoczęciem nauki jQuery, a tak to w sumie na co dzień to się zbytnio nie przydaje. Dziękuję winksmiley.jpg
zegarek84
Cytat(erix @ 21.08.2010, 21:07:38 ) *
...Ale jeśli chodzi o np. pisanie dodatków do programów (UserJS, gdzie piszesz pod konkretny soft), czy oskryptowanie środowisk embedded (spróbuj pisać widgety w JS na Windows Mobile winksmiley.jpg - co ciekawe, IE na WM ma normalne XHR), to wtedy nie ma sensu załączać całego liba, tylko się klepie w czystym. winksmiley.jpg
UsersScripts to głównie na mozille są pisane a tam pod Greasemonkey jak ktoś czyta manuala i użyje nagłówków to bibliotekę załącza się tylko raz... a i na pewnej gierce były pisane uniwersalne rozwiązania pod każdą przeglądarkę by skrypty pasowały to i tu i tam oraz pisanie tam jak najbardziej anonimowych funkcji działających w tle gdyż admini mieli możliwość czasem robienia sobie zrzutu pewnych elementów obiektu window... a
ograniczenie ajax'a na domenę można obejść przez dhtml'a i załączanie skryptów - gożej z anonimowością na operze niż na mozilli ale wszystko da się obejść.. ^^ [nawet i referera ze skryptów js można ukryć ;D]
#luq
Cytat(zegarek84 @ 21.08.2010, 22:23:23 ) *
ograniczenie ajax'a na domenę można obejść przez dhtml'a i załączanie skryptów

Byłbym wdzięczny jakbyś rozwinął myśl, jakiś przykładzik podał etc. winksmiley.jpg
erix
Cytat
ograniczenie ajax'a na domenę można obejść przez dhtml'a i załączanie skryptów

No via GET, to można obejść, ale gorzej z POST. Ale i tak danych za wygodnie nie odbierze. winksmiley.jpg

Cytat
ograniczenie ajax'a na domenę można obejść przez dhtml'a i załączanie skryptów - gożej z anonimowością na operze niż na mozilli ale wszystko da się obejść.. ^^ [nawet i referera ze skryptów js można ukryć ;D]

ogólnie, to jeśli chodzi o uprawnienia skryptów GM, to one i tak są na lepszej pozycji - mają odpowiedni obiekt do XHR międzydomenowego. Do Opery też coś takiego ktoś napisał (ale tylko w UserJS).
#luq
Cytat(erix @ 21.08.2010, 23:06:37 ) *
No via GET, to można obejść, ale gorzej z POST. Ale i tak danych za wygodnie nie odbierze. winksmiley.jpg

Aaa... myślałem, że coś do obustronnej komunikacji. Wysyłać coś to chyba wygodniej jest prze Image winksmiley.jpg
A POST`a to można przecież niewidocznym formularzem i odpalić submita.
zegarek84
Cytat(#luq @ 21.08.2010, 22:56:21 ) *
Byłbym wdzięczny jakbyś rozwinął myśl, jakiś przykładzik podał etc. winksmiley.jpg
tak jak Erix pisze tylko przez get jest mi znany sposób [no można by kombinować z ramkami, zapisaniem stanu w sesji i potem odebranie odpowiedzi przez get ale...] - jest to mało bezpieczne jeśli z niezaufanego źródła załącza się skrypt - a bezpieczeństwa nie potrzebowałem to i nie sprawdzałem, czy zadziałało by dynamiczne załączanie niepoprawnego arkusza css i potem parsowanie treści JSON... generalnie to sposób jest taki:
Howto Dynamically Insert Javascript And CSS + jeśli nie wykonujesz od razu skryptu a przekazujesz tylko jakieś obiekty czy z jakiegoś powodu jest Ci potrzebne wykrycie zdarzenia onload to zapoznaj się z tym tematem [ale przeczytaj cały gdyż rozwiązanie pod ie nie jest w poście który pomógł]:
[JavaScript]Załączanie prototype poprzez js

ad. @up Erix - co do opery to o ile pamiętam, to flash nie ma ograniczeń i wstawka przez niego była [a więc i na IE osiągalna] - zresztą tam gdzie grałem to i na cookies robili przejścia i na flash i inne - choć mi do gustu przypadło gdy nie zmieniało się kart ładowanie wszystkiego do nazwy okna ^^ - zresztą wszystko zależy od chwili potrzeby -> a i tam co grałęm to i śmiałem się z definicji skryptozakładki - zawsze stosowałem te oderwane od gry nawet jesli robiły to co dozwolone, to przez brak kontroli nad ich treścią przez adminów były nie legalne - i tu była zabawa w pisaniu anonimowych obiektów które w zależności od adresu robiły odpowiednie rzeczy i nic nie zostawiały w obiekcie window ;D

// sorki za błędy - ale jest okazja to se piwkuję a na forum od tak kliknąłem ;p

[edit]
Cytat(#luq @ 21.08.2010, 23:25:12 ) *
Aaa... myślałem, że coś do obustronnej komunikacji. Wysyłać coś to chyba wygodniej jest prze Image winksmiley.jpg
A POST`a to można przecież niewidocznym formularzem i odpalić submita.

właśnie tak jest rozwiązany upload plików al'a hasło ajax o ile dobrze pamiętam... pozatym przekazanie przez geta argumentów to przekazujesz argumenty - więc się komunikujesz - znajomemu co chciał połączyć userscript z serwerem jako najprostszą drogę wskazałem ładowanie obrazków do new image z odpowiednimi getami - choć opisywałem inne sposoby - ale to było dawno...
erix
Cytat
co do opery to o ile pamiętam, to flash nie ma ograniczeń

Właśnie, jest jeden mankament: flash.

Cytat
jeśli nie wykonujesz od razu skryptu a przekazujesz tylko jakieś obiekty czy z jakiegoś powodu jest Ci potrzebne wykrycie zdarzenia onload to zapoznaj się z tym tematem

To się JSONP nazywa i nie jest żadną nowością.
zegarek84
Cytat(erix @ 21.08.2010, 23:29:06 ) *
Cytat
jeśli nie wykonujesz od razu skryptu a przekazujesz tylko jakieś obiekty czy z jakiegoś powodu jest Ci potrzebne wykrycie zdarzenia onload to zapoznaj się z tym tematem

To się JSONP nazywa i nie jest żadną nowością.
już maiłem pisać, że źle zacytowałeś ale stuknałem google [różne rozszeżenia nazwy json już widziałem ;p] (nie, źle zacytowałeś gdyż zacytowałeś o samym zdarzeniu onload a to nic nie ma wspólnego z JSON ;D - wstawka przed odpowiedz) - jednak mało co komu mówią te dodatkowe literki jak nie opisze się co i jak - a i przez dhtml to o tyle jest to nie bezpieczne, że niestety jeśli js się dołącza to to jest deczko niebezpieczne - bezpieczne dla obiektów js by było gdyby zrobić coś podobnego do jquery.noconflict() - czy jak tam jest [jquery proste a prawie go nie znam bo nie programuję ;p] ale, żeby nie mieć wogóle z zewnątrz dostępu do obiektu jquery - oczywiście html'a i tam to może rozwalić więc pasuje sprawdzać, czy po onload coś ważnego się zmieniło ;p

ps. nawet w wikipedi nie bardzo to opisali [może mi coś na oczy padło gdyż deczko drinkuje i po różnych forach zerkam ;p] - a w nowszych przeglądarkach funkcja do parsowania json jest zaimplementowana do js...
erix
Cytat
a i przez dhtml to o tyle jest to nie bezpieczne, że niestety jeśli js się dołącza to to jest deczko niebezpieczne - bezpieczne dla obiektów js by było gdyby zrobić coś podobnego do jquery.noconflict() - czy jak tam jest [jquery proste a prawie go nie znam bo nie programuję ;p] ale, żeby nie mieć wogóle z zewnątrz dostępu do obiektu jquery - oczywiście html'a i tam to może rozwalić więc pasuje sprawdzać, czy po onload coś ważnego się zmieniło ;p

A teraz po polsku?

Cytat
ps. nawet w wikipedi nie bardzo to opisali [może mi coś na oczy padło gdyż deczko drinkuje i po różnych forach zerkam ;p] - a w nowszych przeglądarkach funkcja do parsowania json jest zaimplementowana do js...

to, czyli co?
zegarek84
Cytat(erix @ 22.08.2010, 00:08:30 ) *
to, czyli co?
JSONP ;P - a wcześniejsze teraz nie dam rady [a żźe nie kilka razyn poprawiałem to inna sprawa ;p] - i tak zrozumiałeś a się śmiejesz [czemu ten lewy alt tak blisko?? ;p]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.