digitální Citron

jQuery pro začátečníky: AJAX

Pozdě, ale přece. Poslední díl seriálu o jQuery je zde. Tématem se vracím k článku, který jsem napsal téměř přesně před třemi lety. S jQuery můžete ale na ten článek zapomenout. Práce s AJAXem nebyla nikdy jednodušší, dávejte pozor:

$("#ukazkovy").load("/stranka.html");

Myslím, že z příkladu je vše jasné. Do elementu s ID ukazkovy načti stránku stranka.html

Na podobný příklad se podívejte ve zkoušečce.

To je ovšem pouze to nejjednodušší použití, přesto dokáže to samé, jako zdlouhavý příklad na vytvoření vlastního AJAXu z mého staršího článku.

AJAX lze v jQuery použít mnoha způsoby a jQuery má pro něj připraveno několik funkcí. Já používám nejčastěji dvě z nich. První jsem již uvedl výše, to používám hlavně pokud chci prostě načíst někam nějakou stránku. Další zajímavá funkce je $.get(), která umí poslat na soubor nějaká data a další data zase přijmout. Nejdříve si nějaká data pošleme směrem tam:

$.get("test.php", { jmeno: "Petr", prijmeni: "Novak" } );

Právě jsme na stánku test.php poslali proměnnou jmeno s hodnotou Petr a proměnnou prijmeni s hodnotou Novak. Ptáte se k čemu to může být? Co takhle třeba uložení formuláře v pozadí stránky bez toho, aby se znovu načetla? Ve skriptu test.php pak pomocí následujícího zápisu přijmete proměnné a můžete je uložit třeba do databáze:

$jmeno = $_GET['jmeno'];
$prijmeni = $_GET['prijmeni'];

Nyní budeme data přijímat a zpracovávat. Nejdřív příklad:

$.get("test.php", function(vystup){
  alert("Soubor vrátil: " + vystup);
});

Tento příklad zavolá soubor test.php a pokud soubor test.php něco vypíše, budete to mít v proměnné vystup.

Složitější část pro ty, které zajímá, jak si nechat vrátit více jednotlivých dat v různých proměnných

Stačí použít podobnou funkci:

$.getJSON("test.php", function(vystup){
  alert("Jméno je: " + vystup.jmeno + " a příjmení je: " + vystup.prijmeni);
});

Tento příklad zavolá soubor test.php a pokud výstup z tohoto souboru jsou nějaká data ve formátu { prom1: "hodnota", prom2: "jina hodnota"}, tak data pošle do funkce a zpracuje tak šikovně, že je pak můžeme použít jako vidíte právě v příkladu. Ptáte se, jak by měl vlastně soubor test.php asi vypadat? Třeba takto:

<?php
echo '{"jmeno": "Václav", "prijmeni": "Novotný"}';
 ?>

Závěr

Tak to je, milí přátelé, z jQuery vše. Samozřejmě možná ještě o nějakých specialitách tohoto frameworku napíšu (bude-li zájem?). Vězte, že tento seriál je jen špička ledovce zvaného jQuery. Chtěl jsem ho napsat tak, aby ani laika neodradilo si ho přečíst a snad se povedlo. Na konec snad ještě doporučím výborné články o jQuery na Profimagazínu.

Publikováno 2. 11. 2008 | #

Relevantní články


Komentáře

1. Michal | 7. 11. 2008 | 11:23 | #

Díky za pěknou ochutnávku. S jQuery jsem zatím nepracoval, ale teď to rozhodně jdu vyzkoušet.

2. alča www.reality-zlinsko.cz | 15. 11. 2008 | 15:17 | #

díky za článek

3. Ruda | 18. 11. 2008 | 11:27 | #

Hezke clanky o Jquery? Mel bych zajem o pokracovani :-) Dekuji

4. Dědek | 20. 11. 2008 | 12:47 | #

Mě se články moc líbí, nevěděl jsem kudy do AJAXu a Frameworků a tohle jsem zrovna potřeboval. Děkuju moc.

5. Dědek | 21. 11. 2008 | 12:58 | #

Mě se články moc líbí, nevěděl jsem kudy do AJAXu a Frameworků a tohle jsem zrovna potřeboval. Děkuju moc.

6. Kibo | 22. 11. 2008 | 20:11 | #

Bezva článek díky.

7. ronny vypni.net | 1. 1. 2009 | 17:41 | #

Taky bych rád za seriál poděkoval. :-)

8. Martin | 24. 1. 2009 | 20:21 | #

Pekny serial , zaslouzi pochvalu . Autorovi velke dik

9. Micro | 23. 5. 2009 | 21:56 | #

Skvělý tutorial hodně mi pomohl..

10. Observer | 28. 5. 2009 | 04:26 | #

Moc pekna serie clanku. Dneskem zacinam pouzivat JQuery kde to pujde. Absolutni nadseni:)

11. duta_hlava | 1. 6. 2009 | 11:01 | #

Bezva pochopitelné polopatické s příklady a i pro takové jako jsem já. Dobrý design .Klobouk dolů.

12. skalda | 5. 6. 2009 | 18:31 | #

a jde takto posílat / měnit proměnné vyvoláním jq-funkce z (např) index.php bez znovunačtení stránky?

13. skalda | 5. 6. 2009 | 20:24 | #

a jde takto posílat / měnit proměnné vyvoláním jq-funkce z (např) index.php bez znovunačtení stránky?

14. ErrorTM | 10. 9. 2009 | 15:33 | #

Nemůžu si pomoci ale to s tim test.php mi prostě nejde. Nevyhodí to žádnej alert.

15. ErrorTM | 10. 9. 2009 | 15:44 | #

Tak už se mi to povedlo, musel jsem to přesunout před ostatní scripty. Narazil jsem ale na další věc a to, že se neodešlou žádné proměnné (jmeno, prijmeni). Takže alert je nevypíše. (echo ?Jméno: ".$jmeno.? Příjmení: ?.$prijmeni?;)

16. Boom | 11. 10. 2009 | 16:25 | #

Serie clanku zde uvedena je opravdu fajn. Autorovi diky a i me pomohla se do tematu dostat. Myslim ovsem, ze dalsi pokracovani neni potreba. Vse je krasne popsano na materskem webu www.jquery.com

17. camo camo.tym.sk | 14. 10. 2009 | 23:47 | #

Dik moc! Konečne viem čo to je. V Aj by som si na to netrúfol.

18. Pilotak | 5. 1. 2010 | 23:16 | #

A to jsem se jQuery bál?už nemusím :) krásný seriál díky

19. Linux | 10. 2. 2010 | 00:20 | #

Dělat s ajaxem byl děs, tohle je super, hodně mi to ulehčí práci. Díky za nastartování správným směrem!

20. Adam Libuša | 11. 2. 2010 | 16:04 | #

Perfektný seriál, díky moc :)

21. dev stmivani.eu | 18. 2. 2010 | 23:05 | #

Krásná ukázka ideálního představení!

22. Makeš www.makes.cz | 28. 2. 2010 | 13:40 | #

Gratuluji k perfektně napsanému miniSeriálu. Pokud v tom budeš pokračovat, tak určitě najdeš spoustu lidí co si to přečtou ;)

Pro ty co to s jQuery myslí vážně doporučuji ještě web (AJ) http://www.learningjquery.com/

23. Neas | 12. 3. 2010 | 19:52 | #

Mám dotaz: udělal jsem si malý chat pomocí ajaxu a php. Vše funguje jak má, ale když pošlu nějaký informace stránce chat.vyhodnoce­ni.php (obdoba test.php z tohoto článku), vráti mi tato stránka sice to, co má, ale špatně se mi zobrazuje čeština. v index.php, chat.vyhodnoce­ni.php i v databázi mám přitom kódování češtiny. Nevíte někdo, prosím, co to způsobuje, resp. jak to napravit? Zdrojový kód na tomto fóru: http://diskuse.jakpsatweb.cz/??

24. Jakub Hejda www.clickmedia.cz | 27. 3. 2010 | 01:34 | #

pro Neas:

A posíláš na začátku skriptu hlavičku? header(?Content-Type: text/html; charset=utf-8?);

25. NickVK www.compmania.sk | 24. 4. 2010 | 15:19 | #

Výborný seriál o jQuery, myslím, že ani chvíľu som nebol vedľa :-). Ďakujem

A myslím, že jQuery úplne vystihuje ich slogan :-) [* http://open-upload.com/?e174e2ba.png *]

26. NickVK www.compmania.sk | 24. 4. 2010 | 15:21 | #

Zaujímavé je, že keď zadám podľa Texy! obrázok, tak ho v náhľade zobrazí ale po odoslaní príspevku nie :-). Oprav si to.

27. Robert | 11. 5. 2010 | 13:17 | #

Super seriál. Díky moc. Jen by jsi mohl doplnit info, jak Ajaxem posílat proměnné a zároveň data získat.

Je to takto?:

$.get(?test.php?, { jmeno: ?Petr?, prijmeni: ?Novak? }, function(vystup){
alert("Soubor vrátil: " + vystup); });

Nebo takto?:

$.get(?test.php?, function(vystup){
alert(?Soubor vrátil: " + vystup); }, { jmeno: "Petr?, prijmeni: ?Novak? });

28. Martin | 15. 5. 2010 | 02:15 | #

Díky moc za článek kdy bych o něm věděl dřív už se jQuery věnuju dávno :D je to super

29. Pomgoe | 22. 5. 2010 | 13:27 | #

V zkoušečce píšete, že např. seznam.cz nejde načíst. Ale třeba v IE6 to lze načíst normálně.

30. Lweek www.lweek.net | 31. 5. 2010 | 00:27 | #

To vypadá, že výstup je který umí zpracovat .get je ve formátu JSON?

31. _CJ_ | 12. 8. 2010 | 14:01 | #

Určitě bych byl pro napsání dlašího článku? ono by stačili i příklady řešení určitých problémů..z toho si člověk veme nejvic?manual je pekna vec ale nerekne vse :)

jinak dobra prace :)

32. Matej | 15. 8. 2010 | 23:42 | #

Ďakujem autorovi za výborný seriál. Dobrá práca. Ak bude ďalší diel, určite si ho nenechám ujsť :)

33. Kozoroh www.a-pool.cz | 23. 8. 2010 | 11:15 | #

Ahoj, pro ty začátečníky komu to hned nejede, tak jako mě jen upozornění.

Svůj script není možné dávat mezi taky nalinkovaného skriptu jquery. Je potřeba zadat nové tagy skriptu nebo vložit svůj externí skript. Viz. kapitola http://www.jakpsatweb.cz/?cleneni.html ?Jak kombinovat interní a externí zápis?.

Problém je, že konzole chybu nehlásí, takže je to problém někdy odladit.

34. Nettopyr | 26. 8. 2010 | 12:01 | #

Děkuji moc, rozhodně jsem konečně pochopil JQuery a zkusím své staré PHP stránky předělat do jQuery. Pokud mohu přidat nápad, mohl bys zkusit napsat něco o připojení MySQL databáze a výpisu tabulek

35. niobi www.mac-war.eu | 14. 10. 2010 | 19:56 | #

Nettopyr [34]: : mysql a výpis si natahnes pres php napr do skryteho divu .. ten si upravis bud php nebo JS(jquery) a pak to jen zobrazis :) resp tak to aspon resim ja .. je mozne ze na to jdu moc slozite, ale zatim jsem neresil nic tak sileneho aby toto reseni neslapalo jak svycarsky hol(d)inky

36. Blažej ... spokojny | 29. 11. 2010 | 20:27 | #

wow?toto je revolucna novinka v mojich znalostiach diki !!! -D

37. Koci | 1. 12. 2010 | 12:47 | #

Výborný článek, sháněl jsem úplné základy a našel jsem. Díky těmto běžným příkladům jsem si napsal vlastní menu během několika minut. Děkuji!

38. Pukar | 18. 12. 2010 | 20:42 | #

Dik

39. Jan Knížek www.hra-rfu.cz | 17. 1. 2011 | 21:12 | #

Chtěl bych moc poděkovat za tutoriály. Původně jsem se o Jquery nezajímal, ale už jsem změnil názor;)

40. Gimli | 20. 1. 2011 | 21:28 | #

Díky, jen pokračuj :)

41. Lester | 28. 2. 2011 | 04:08 | #

data která lezou z php skriptu jsou v JSON ? chápu, lze nějak snadno realizovat pro XML výstup ?

42. Martin | 27. 4. 2011 | 09:06 | #

Díky za článek, je to dobrý základ.

43. HerrZ www.web4f.cz | 2. 6. 2011 | 16:28 | #

Medhi, díky! Dneska jsem se naučil požívat Jquery a Ajax za jeden den. Vesměs v Javascriptu jsem nováček a moc s ním nepracuji, ale základy mi stačí na pochopení a prohloubení znalostí :) Ještě jednou díky, je to suprové!

44. Vašek | 29. 8. 2011 | 11:44 | #

Prosím o radu, potřebuji poslat na server DATA, ale nevím jak poslat proměné, jelikož se formulář generuje dynamicky, mám tedy pole kde klíč je proměná a hodnota je hodnota. Jak by měl vyadat správný zápis, víte prosím?

standardně funguje

$.getJSON(?tes­t.js?, { name: ?John?, time: ?2pm? }, function(json) {
alert("JSON Data: " + json.name + json.time);
});

ale právě tuto část { name: ?John?, time: ?2pm? }

potřebuji dynamicky, mám proměnou

form[name] = ?John?

form[time] = ?2pm?

ale muže se objevit cokoli

form[xxxx] = ?yyyyyyy?

díky moc za typ

Vašek

45. Lukáš | 16. 12. 2011 | 18:13 | #

Super, díky, konečně mám představu, jak na jQuery :)

46. Martin | 22. 1. 2012 | 13:01 | #

Děkuju (dodatečně) za krásnej úvodní seriál, kterej jsem na jeden dech za dopoledne přečetl a jsem ohromně nadšenej a teď hurá na jquery!

Přidat komentář

Jak psát

  • Pište s diakritikou
  • Flame [?] bude smazán
  • URLnení povinné
  • na jiné komentáře odkazujte číslem v hranatých závorkách [1]
  • odstavce se dělí dvojím odřádkováním
  • odkaz začínající na http:// se sám převede na odkaz
  • Prostě tu funguje Texy!
Komentář
Zapamatovat si údaje pro příště
© 2005 - 2010 Jiří Zralý | Design a CMS: Jiří Zralý | Běží na Hosting Blueboard.cz |