Ajax – 1. lekce
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Ajax – 1. lekceAjax – 1. lekce

 

Ajax – 1. lekce

Google       Google       8. 7. 2008       42 661×

Po úvodním díle si probereme objekt XMLHttpRequest a naučíme se tento objekt zinicializovat.

Objekt XMLHttpRequest

Tento objekt byl původně implementován v Intrnet Exploreru 5 jako komponent ActiveX. Nakonec se stal standardem ve webových prohlížečích a s výjimkou Internet Exploreru 6 je podporován všemi moderními prohlížeč jako IE 7, IE 8, Mozilla Firefox, Opera, Safari… I když se stal standardem ve webových prohlížečích, nejedná se o standart W3C, sice ho má konsorcium v návrhu DOM Level 3, avšak není implementován všemi prohlížeči.

Nakonec bych rád uvedl, nebýt objektu XMLHttpRequest (dále jen XHR), aplikace jako RoundCube, Google Suggest, Gmail a Gmaps by neexistovaly a ani byste nečetli tento článek mého seriálu a v konečném důsledku bych ani já neměl o čem psát.

Vytvoření XHR

Jelikož XHR není standardem W3C, existují různé způsoby jeho vytvoření. Ve starších prohlížečích a IE 6 je XHR implementován jako objekt ActiveX a jeho instanci vytvoříme následovně:

xhr = new ActiveXObject(Microsoft.XMLHttp);

U ostatních moderních prohlížečů jako vytvoříme instanci jako nativní objekt XHR:

xhr = new XMLHttpRequest();

Při vytváření XHR jako objektu ActiveX musíme určit, kterou verzi MSXML použijeme. Každé vydání přináší lepší stabilitu a rychlost. Ve svých aplikacích byste měli použít vždy nejnovější verzi, která je pro daný prohlížeč dostupná. Problém nám nastává v případě, že budeme volat verzi, kterou prohlížeč uživatele nepodporuje. V tom případě dojde k výjimce, kterou musíme ošetřit.

Verze MSXML

  • Microsoft.XMLHttp
  • MSXML2.XMLHttp.2.0
  • MSXML2.XMLHttp.3.0
  • MSXML2.XMLHttp.4.0
  • MSXML2.XMLHttp.5.0
  • MSXML2.XMLHttp.6.0
Verze 6.0 se objevila společně s Windows Vista. Je doporučeno používat tuto verzi vždy, když je to možné. Jak se ovšem dalo předem očekávat, tato veze objektu není dostupná pro uživatele starších verzí Windows, takže Microsoft v takovém případě doporučuje použít nouzově verzi 3.0.

Zdroj: Ajax – Profesionálně, nakladatelství Zoner Press

Použití nejnovější verze MSXML

Pokusíme se vytvořit XHR s nejnovější verzí. Pokud jej prohlížeč nebude podporovat, ohlásí chybu, kterou pomocí try a catch zachytíme a budeme ignorovat, poté pokus zopakujeme se starší verzí.

Univerzální funkce pro tvorbu XHR

Nyní si můžeme napsat univerzální funkci, kterou můžeme použít ve všech prohlížečích. Postup bude následující:

  1. Vytvoříme novou funkci pomocí:
    function vytvorXHR(){}
  2. Musíme inicializovat proměnou, do které objekt uložíme, to provedeme pomocí:
    var XHR;
  3. Nyní použijeme try a catch, do try zadáme příkaz pro vytvoření XHR jako instance nativního XHR a do catch zadáme příkaz pro vytvoření XHR jako objektu ActiveX. Předpokládáme použití moderních prohlížečů a pro případ, že by naše stránky navštívil uživatel se starším prohlížečem, tak při vytváření XHR jako instance nativního XHR dojde k chybě, kterou budeme ignorovat a přejdeme k vytvoření XHR jako objektu ActiveX. Funkce by měla vypadat nyní následovně:
    function vytvorXHR(){
    var xhr;
    try{
    xhr = new XMLHttpRequest();
    }catch(e){
    xhr = new ActiveXObject(Microsoft.XMLHttp);
    }
    }
  4. Abychom mohli použít nejnovější verzi MSXML, rozšíříme naši funkci o pole, v kterém definujeme verze MSXML:
    var MSXmlVerze = new Array('MSXML2.XMLHttp.6.0','MSXML2.XMLHttp.5.0','MSXML2.XMLHttp.4.0','MSXML2.XMLHttp.3.0','MSXML2.XMLHttp.2.0','Microsoft.XMLHttp');
  5. Abychom určili, kterou verzi MSXML můžeme použít, tak pomocí cyklu for budeme procházet jednotlivé záznamy v poli. Část catch, kde nastavujeme XHR jako objekt ActiveX, upravíme následovně:
    for(var i = 0; i < MSXmlVerze.length; i ++){
    try{
    xhr = new ActiveXObject(MSXmlVerze[i]);
    break;
    }catch(e){
    //vzniklou chybu ignoruji a pokračuji nastavením další verze
    }
  6. Konstrukce try, catch nám zajistí, že pokud vytvoření XHR selže, chybu budeme ignorovat a zopakujem postup. Pokud úspěšně nastavíme objekt ActiveX se správnou verzí MSXML, z cyklu vyskočíme pomocí break.
  7. Nakonec naše funkce vrátí objekt XHR nebo zobrazí chybu:
    if(!xhr)
    alert("Došlo k chybě při vytváření objektu XMLHttpRequest!");
    else
    return xhr;
  8. Naše funkce tedy v konečné fázi vypadá takto:
    function vytvorXHR(){
        var xhr;
        try{
          xhr = new XMLHttpRequest();
        }catch(e){//pro případ starší verze prohlížeče
          var MSXmlVerze = new Array('MSXML2.XMLHttp.6.0','MSXML2.XMLHttp.5.0','MSXML2.XMLHttp.4.0','MSXML2.XMLHttp.3.0','MSXML2.XMLHttp.2.0','Microsoft.XMLHttp');
          for(var i = 0; i <= MSXmlVerze.length; i ++){
            try{
              xhr = new ActiveXObject(MSXmlVerze[i]);
             //alert(MSXmlVerze[i]);
              break;
            }catch(e){
              //vzniklou chybu ignoruji a pokračuji nastavením další verze
            }
          }
        }
        if(!xhr)
          alert("Došlo k chybě při vytváření objektu XMLHttpRequest!");
        else
          return xhr;
      }

Závěr

V dnešním článku jsme se naučili pracovat se samotným srdcem Ajaxu. V příštím díle se vrhneme na metody a atributy XHR.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
Student ČVUT FJFI katedry softwarového inženýrství v ekonomii. Mezi jeho zájmy patří programování a sport. Autor má zkušenosti s PHP 5, MySQL, XHTML a CSS. Zajímá se o platformu .NET, jazyk C#, ASP.NET a WPF.
Web    

Nové články

Obrázek ke článku Stavebnice umělé inteligence 1

Stavebnice umělé inteligence 1

Článek popisuje první část stavebnice umělé inteligence. Obsahuje lineární a plošnou optimalizaci.  Demo verzi je možné použít pro výuku i zájmovou činnost. Profesionální verze je určena pro vývojáře, kteří chtějí integrovat popsané moduly do svých systémů.

Obrázek ke článku Hybridní inteligentní systémy 2

Hybridní inteligentní systémy 2

V technické praxi využíváme často kombinaci různých disciplín umělé inteligence a klasických výpočtů. Takovým systémům říkáme hybridní systémy. V tomto článku se zmíním o určitém typu hybridního systému, který je užitečný ve velmi složitých výrobních procesech.

Obrázek ke článku Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Vedení týmu v oboru informačních technologií se nijak zvlášť neliší od jiných oborů. Přesto však IT manažeři čelí výzvě v podobě velmi rychlého rozvoje a tím i rostoucími nároky na své lidi. Udržet pozornost, motivaci a efektivitu týmu vyžaduje opravdu pevné manažerské základy a zároveň otevřenost a flexibilitu pro stále nové výzvy.

Obrázek ke článku Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Za poslední rok se podoba práce zaměstnanců změnila k nepoznání. Především plošné zavedení home office, které mělo být zpočátku jen dočasným opatřením, je pro mnohé už více než rok každodenní realitou. Co ale dělat, když se při práci z domova ztrácí motivace, zaměstnanci přestávají komunikovat a dříve fungující tým se rozpadá na skupinu solitérů? Odborníci na personalistiku dali dohromady několik rad, jak udržet tým v chodu, i když pracovní podmínky nejsou ideální.

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý