AJAX – návod pro začátečníky

Předem chci říci, že tento článek je určen hlavně začátečníkům, kteří by rádi využili metody AJAX, ale nejsou s to pochopit odborné (a výborné) články nebo nezvládají tak dobře angličtinu, aby hledali mimo českou internetovou zátoku.

Sám nejsem odborník na toto téma, ale pochopil jsem zevrubně, jak to asi funguje a využiji také růzé kvalitní zdroje.

Co je to AJAX

O AJAXu již bylo napsáno mnoho, pokud nevíte o co jde, doporučuji třeba článek AJAX – Kde jsou hranice? od Martina Snížka nebo článek na Rootu od Jakuba Vrány.

Pokud nejste laikové v JavaScriptu a PHP a v tomto oboru vám to pálí, jděte radši tam.

Pro ty, co tu ještě zůstali: AJAX je k tomu, abyste mohli pomocí JavaScriptu načíst třeba stránku PHP (v pozadí stránky, na které se nacházíte) a poslat jí nějaká data. Jiná data od ní můžete i přijmout a hned je použít. Stránka, na které v tu chvíli jste se vůbec neobnovuje.

Návod

Mám raději jeden jasný příklad než látra teorie. Takže jdeme na to.

Chceme třeba mít seznam nějakých článků ve formulářovém poli typu <select> a pokud nějaký vybereme, chceme obsah toho článku zobrazit hned vedle, bez obnovení stránky. Přitom obsahy těch článků jsou úplně v jiných souborech.

<select name="vyber" id="vyber" onchange="vyberClanek();">
<option value="0">Vyberte článek</option>
<option value="clanek1.htm">Článek jedna</option>
<option value="clanek2.htm">Článek dvě</option>
</select>

<div id="mistoZobrazeni">
</div>

Dalším krokem bude vytvoření javascriptové funkce vyberClanek();:

function vyberClanek() {
var url = document.getElementById("vyber").value;

if (url != 0) {
var httpRequest;
if (window.ActiveXObject) {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} else {
httpRequest = new XMLHttpRequest();
}
httpRequest.open("GET", url, true);
httpRequest.onreadystatechange = function() {
processRequest();
};
httpRequest.send(null);
} else {
document.getElementById("mistoZobrazeni").innerHTML = "";
}
}

Ve funkci se vytvoří objekt XMLHttpRequest do proměnné httpRequest. Potom pomocí httpRequest.open("GET", url, true); načteme stránku obsaženou v proměnné url. Následně je zavolána funkce processRequest();, ve které zpracujeme data, která byla vypasána načtenou stránkou.

function processRequest() {
if (httpRequest.readyState == 4) {
if (httpRequest.status == 200) {
var mistoZobrazeni = document.getElementById("mistoZobrazeni");
mistoZobrazeni.innerHTML = httpRequest.responseText;
} else {
alert("Chyba pri nacitani stanky " + httpRequest.status + ":" + httpRequest.statusText);
}
}
}

Jiná použití

Využití metody AJAX je velmi mnoho. Já ji například používám zde na blogu. Pod každým článkem můžete vidět odkaz, zda vás zaujal tento článek. Kliknutím na něj se žádná stránka neobnoví, pouze se pomocí javascriptu zavolá funkce, která načte v pozadí nějakou stránku s parametry. Načtená stránka potom aktualizuje data v databázi.

Komentáře

tark

Jo tak třeba zrovna tohle se mi vůbec nelíbí – myslím tedy tvůj odkaz „je to ok“ … Proč? Nemám odezvu, jestli se něco stalo nebo ne…

Medhi

tark (#1): Teď vůbec nevím co myslíš?

tark

Ajaj, asi jsem to napsal blbě … prostě po kliknutí na odkaz Tento článek mě zaujal nedostanu žádný potvrzení, takže si myslím, že se nic nestalo.

už je to srozumitelný? 😉

Medhi

tark (#3): Jakto? Napíše to „Děkuji za váš názor“. Nebo tobě to nepíše?

Alex

U mně to funguje… Zobrazí se to místo toho textu na který klikáš…

lookyn

Myslím, že tark to myslel tak, že se nezobrazí například nějaký číselný údaj, dle kterého poznáme, jak oblíbený je článek či tak nějak podobně 😉

Dero

Srozumitelně, názorně, střízlivě. Moc hezký úvod do tématiky.

Chtěl bych se zeptat, budou další pokračování, nebo to bylo jednorázové představení technologie?

Každopádně za článek děkuji.

Arcao

Existuje i alternativa v podobě načítání javascriptu přes DOM.

Marty

Velice pěkné a jednoduché shrnutí, konečně někdo také myslí na ty méně zdatné v tomto oboru.

Martin Picek

Legrační je to, že teď ti všichni naklikají, že se jim tento článek líbí (a taky, že líbí) kvůli vyzkoušení příkladu. 🙂

Medhi

Martin Picek (#10): To jsem si taky říkal, příště přiložím raději nějaký pěkný příkládek na vyzkoušení.

Petr Stříbný

Taky jsem si kliknul. Myslím, že na ankety a podobné věci je to jak dělané.

Roman

Nešlo by přidat stránku s ukázkou. Jinak pěkná web 🙂

dgx

Přehledné, jasné a motivující! Hned si jdu nějaký AJAX napsat 😉

Nenuťme uživatelům reklamu. Nabídněme ji

Jak? Tak, že jim dáme možnost volby zbavit se reklamy, kterou již viděli a nezajímá je. Přesně to jsem zkusil aplikovat na reklamu, která se zobrazuje v systému BlueBoard.cz. Reklamu dovoluji návštěvníkům webu vypínat.

Na tuto myšlenku mě přivedl názor v jedné diskusi o blokování reklamy, kde někdo namítnul, že pokaždé když přijde na určitý web, vidí tam tu samou reklamu. Ta reklama ho nezajímala, nikdy by na ní tedy neklikl, ale ona se mu zobrazovala pořád dokola. Tomu říkám nucení.

Přitom bylo evidentní, že uživatel si reklamu prohlédl nebo pročetl a neprojevil o ní zájem. Další takové zobrazování reklamy přináší hned dva zápory:

  • majitel webu plýtvá reklamním prostorem, protože tato reklama je v tuto chvíli absolutně neúčinná. Mohl by zobrazit jinou, když ví jistě, že jej tato nezajímá.
  • návštěvník získává negativní pocity z toho, jak se mu reklama pořád nutí, v negativním světle vidí celý web, inzerenta, který na něj z reklamy pokřikuje a v konečné fázi to může vést i k tomu, že si reklamu bude blokovat.

Pokud si ji bude moci vypnout, všechna negativa zmizí. Já jako provozovatel webu na tom získám tím, že se dovím, která reklama ho nezajímá a zobrazím mu jinou. Pokud si vypne všechny, co mám v oběhu, nezobrazím nic. O nic tím nepřijdu, protože pokud uživatel ty reklamy vypnul, stejně by na ně nikdy neklikl. A to v PPC (Pay Per Click) systému je téměř to samé, jako by se nezobrazovaly.

Další výhody pro mě jsou nasnadě. Uživatel bude mít můj web raději. Může ho mít totiž bez otravných reklam. Také jakmile zařadím do oběhu reklam nějakou novou, uživateli, který měl všechny reklamy povypínané se tato nová reklama zobrazí a rozhodně na sebe upoutá. Určitě více, než kdyby se mihla mezi desítkami jiných. On se na ní podívá a buď klikne nebo vypne. A jede spokojeně dál.

Žádné důkazy

Na BlueBoard.cz již vypínání reklam běží asi 2 měsíce. Kvůli tomuto vypínání neozobrazím denně 2-4% reklamy a toto procento se nijak nezvětšuje. Bohužel už nemám měřeno, o kolik se změnil počet prokliků za den a hodně mě to mrzí. I tak by to ale záleželo na momentálně zobrzovaných reklamách a jejich úspěšnosti.

Takže na konec jsem žádné dokázané zisky nepředložil, veškerá pozitiva vypínání reklamy jsou spíše odvozená. Budu tedy rád i za vaše názory.


Komentáře

1. Alex www.cheese.cz | 11. 10. 2005 | 09:17 | #

Nevím nakolik jsi tuto funkci na BlueBoard ohlásil, ale není to trochu zkreslené tím, že o ní uživatelé prostě nevědí? Zkoušel jsem jak to funguje – paráda. 🙂 Kontextová reklama mě ale vůbec neruší, takže ani nepociťuju důvod ji vypínat. S blikajícími bannery je to samozřejmě jinak…

Nápad dobrý, zpracování skvělé. Jen nedovedu posoudit, jestli to povede k užitku…

2. Michal Pospiech cesar.vtipky.com | 11. 10. 2005 | 14:53 | #

Toto co jsi udělal není vůbec špatné, ale co když někdo přichází z internetové kavárny či ze školy? Předpokládám, že to uložíš uživateli do pc, že na www.blueboard.cz se nemá zobrazovat reklama. To je sice pěkné, ale třeba ve škole jeden uživatel si ji vypne a příjde druhý a už tu možnost nemá. Nemá možnost se na ni podívat a následně třeba kliknout či opět také vypnout. Já vím, že toto jinak vcelku řešit nelze, ale za zamyšlení si myslím to stojí. 😉

3. wayfarer wayfarer.bloguje.cz | 11. 10. 2005 | 16:12 | #

Michal Pospiech (#2): – pokud BB ukládá tyto informace někam do cookies, má je každý uživatel ve svém profilu (trošku rozumě vedené NT systémy, W9x nikoli, u Linuxu nemám páru, ale tam snad taky).

Z internetových kaváren se IMHO připojuje dneska tak mizivé procento lidí, že nemá význam je v tomhle zohledňovat – vynaložené úsilí by nejspíš převýšilo zisk

4. Jirin www.zahraj.cz | 11. 10. 2005 | 20:07 | #

Michal Pospiech: To je stejne jako u ruznych mericich system apod. Jak sam pises jinak resitelne to neni:-)

5. Medhi | 12. 10. 2005 | 20:42 | #

Alex (#1): No ono to ani nijak ohlašovat nejde. Reklama se zobarzuje i v knihách, kam chodí tisíce lidí, kteří o BlueBoardu vůbec nic nevědí. Prostě tu reklamu jen tak letmo potkají.

6. Michal Pospiech cesar.vtipky.com | 12. 10. 2005 | 21:17 | #

wayfarer (#3): Ono, ty kavárny jsem napsal tak jako, že jsem napsal. 😉 Spíše jsem myslel školy. Jak tak vím, docela dost lidí chodí ze škol a tam většinou se na jednom pc vystřídá dost lidí za den. Ale jak jsem napsal, prakticky je toto neřešitelné, ale za zamyšlení by to stále. 🙂

7. tark fotoblog.blacksuns.net | 14. 10. 2005 | 21:54 | #

Ve školách (aspoň těch moderních, viz Indoš) jsou Win2k a ty mají cookies oddělené, ne? (mluvím z vlastní zkušenosti, jsem na škole, kde to je)

8. TM | 24. 10. 2005 | 18:13 | #

Přiznám se, že se mi nápad s vypínáním reklamy moc líbí. Na BB jsem si ho všiml, ale nepoužil. Jeden z důvodů je ten, že kontextová reklama mi vůbec nevadí, narozdíl od neskutečně agresivní reklamy, která se objevuje na i-dnes, kde nějaký mávající Oskar lítá přes stránku. Pravda, už jenom díky takto agresivní reklamě si nekoupím Oskara … Nemám rád, když mi někdo něco vnucuje. Podle mne je na hodnocení této filosofie moc brzy, ale výsledky by mě velice zajímaly.
Jestli nějaké % bude zkreslené díky např. školám je celkem součástí statistické chyby. Spíš by tenhle způsob mohl přinést zcela nový pohled na reklamu, kdy si i reklamní pracovníci uvědomí, že agresivní reklama opravdu může být i odpuzující.

9. Vojtěch Vrbka vrbka.info/ | 27. 11. 2006 | 17:27 | #

Zajímavý nápad, zajímalo jak na to reaguje reálný uživatel, nekliká dokud nezmizne všechna reklama ?

10. Labe www.labes.ic.cz | 10. 12. 2006 | 13:17 | #

Jo, já taky používam Blueboard a s tím vypínaním reklamy naprosto souhlasím. Taky bytch to takhle chtěl mí na mojí stránce, ale neumím to.

11. Jiří Lysek www.bukovec.cz/ | 19. 12. 2006 | 15:52 | #

Vypnutí reklamy na stránce není přeci těžký. Každopádně bych takový web už nenavštívil znovu. Těžce to odrazuje potenciálního uživatele.

12. tereza www.vune-parfemu.cz | 8. 12. 2009 | 10:55 | #

Já bych to jako uživatel přivítala. Podbízející se reklamy mi docela vadí.

K článku již nelze dál přidávat komentáře. Článek je starší než 2000 dní a komentáře by již nebyly aktuální. Pokud mi chcete něco sdělit použijte jiný kontakt.