Ajax v praxi - Jednoduché vyhledávání
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Ajax v praxi - Jednoduché vyhledáváníAjax v praxi - Jednoduché vyhledávání

 
Hledat
Moderní platforma pro vytvoření vašeho nového webu – Wix.com.
Nyní už můžete mít web zdarma.
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Laser Game Ostrava

Ajax v praxi - Jednoduché vyhledávání

Google       Google       12. 2. 2009       17 061×

V této části si ukážeme, jak na realtime vyhledávání v poli prvků vytvořeném v PHP.

Reklama
Reklama

Jako základ tohoto vyhledávání budeme potřebovat input typu text s aplikovanou událostí onKeyUp, z čehož plyne, že vyhledávání se bude obnovovat při každém úderu do klávesnice, a to voláním funkce ajax() s parametrem this.value, což značí hodnotu vepsanou do textového pole. Jak už jsem řekl, vyhledávání bude probíhat okamžitě, proto není potřeba žádného odesílacího tlačítka. Nakonec si připravíme div s identifikátorem vysledek, do kterého necháme zobrazovat výsledky vyhledávání.

<input type="text" onKeyUp="ajax(this.value);"><br /> 
<div id="vysledek"></div>

Klíček ke každé Ajax aplikaci je XMLHttpRequest objekt. Nyní bych se odkázal na náš kurz Ajaxu, kde zjistíte zásady vytváření tohoto objektu pro různé prohlížeče. Já vám zde ukážu již hotový kód.

var xmlhttp; 
try { 
  xmlhttp = new XMLHttpRequest(); 
} 
catch (e) { 
  try { 
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
  } 
  catch (e) { 
    try { 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    catch (e) { 
      alert("Váš prohlížeč nepodporuje AJAX!"); 
      return false; 
    } 
  } 
}

Nyní, když už máme vytvořený XMLHttpRequest objekt, potřebujeme načíst data ze serveru. K tomu nám poslouží bohatě 2 metody – open() a send(). Metoda open() bude obsahovat 3 parametry. První parametr určí, jakou metodou budeme odesílat dotaz (na výběr máme POST a GET), druhý parametr nastaví url server-side scriptu a třetí parametr nastaví možnost manipulování s metodou (možnosti jsou 2 – true/false). Metoda send() je přesná cesta k odeslání dotazu na server.

Po odeslání dotazu na server potřebujeme získat data, která jsme pomocí server-side scriptu obdrželi. K tomu nám pomůže funkce onreadystatechange, která může vrátit 5 různých hodnot:

  • 0 – dotaz nebyl inicializován
  • 1 – dotaz byl vystaven
  • 2 – dotaz byl odeslán
  • 3 – dotaz se zpracovává
  • 4 – dotaz byl zpracován

Náš script bude kontrolovat hodnoty a jakmile dostaneme hodnotu 4, zobrazíme výsledek uživateli.

<html>
  <head> 
    <script type="application/javascript;version=1.7">
      function ajax(text) { 
        var xmlhttp; 
        try { 
          xmlhttp = new XMLHttpRequest(); 
        } 
        catch (e) { 
          try { 
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
          } 
          catch (e) { 
            try { 
              xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            catch (e) { 
              alert("Váš prohlížeč nepodporuje AJAX!"); 
              return false; 
            } 
          } 
        } 
        var url = 'ajax.php?data=' + text; 
        xmlhttp.onreadystatechange = function() { 
          if(xmlhttp.readyState == 4) { 
            document.getElementById('vysledek').innerHTML = xmlhttp.responseText;
          } 
        } 
        xmlhttp.open("GET", url, true); 
        xmlhttp.send(null); 
      } 
    </script>
  </head> 
  <body> 
    <input type="text" onKeyUp="ajax(this.value);"><br /> 
    <div id="vysledek"></div> 
  </body> 
</html>

A nakonec si připravíme serverový script (ajax.php), ve kterém budeme vyhledávat. Já jsem zvolil pro příklad nejjednodušší řešení – vyhledávání v předem připraveném poli, ale je možné s aplikací dále experimentovat. Použijeme cyklus for, abychom vypsali všechny položky obsahující řetězec zadaný v textovém poli. Na to nám poslouží funkce stristr(), do které budeme vkládat aktuální položku z pole a hledaný řetězec jako $GET['data'], kde data je řetězec vložený do textového pole. Položky obsahující zadaný řetězec budeme ukládat do proměnné $vysledek a na závěr je vypíšeme.

<?php 
  $polozky = array(John,Will,Kelly,Diana,Robert,Nina,George,Michael,Clint,Debora,Nick,Jeff,Kevin,Samuel,David,Peter,Patrick,Quest,Silvia,Umbro,William,Zita,Yantra,Xena,Albert,Ulrich); 
  for ($i = 0; $i < count($polozky); $i++) { 
    if (stristr($polozky[$i], $_GET[data])) { 
      $vysledek .= $polozky[$i] . "n"; 
    } 
  } 
  echo nl2br($vysledek); 
?>

To je vše k jednoduchému vyhledávání v Ajaxu. Příště se těšte na upload souborů pomocí Ajaxu.

Zdroj: http://onlinehowto.net/Tutorials/AJAX/

×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
(fotka) Tomáš BobekAutor je designérem stránek (2D grafika), ovládá jazyky HTML, CSS, PHP, JavaScript a zajímá se o programování v Javě.Krom programujte.com se podílí na projektech maths.cz (jako redaktor a grafik), ceskewebstudio.cz (jako designér) a webber.cz (jako JavaScript scriptař). Ostatní volný čas rád tráví s přáteli nebo sportuje (tenis, nohejbal, hokejbal, závodně fotbal).
Web     Twitter     Facebook    

Nové články

Obrázek ke článku Otevřené bankovnictví usnadní život nejen jednotlivcům, ale i firmám.

Otevřené bankovnictví usnadní život nejen jednotlivcům, ale i firmám.

Většina lidí by ráda obsluhovala své bankovní účty z jednoho místa. Díky evropské směrnici o platebních službách PSD2 by se brzy mohlo jednat o realitu. Některé tuzemské banky již služby takzvaného otevřeného bankovnictví umožňují, nejpozději od září by měly svá API rozhraní zpřístupnit vývojářům třetích stran. To otevírá prostor pro fintech firmy a start-upy, ale třeba i vývojáře ERP a fakturačních systémů, kteří by díky propojení svých produktů s bankami významně ulehčili klientům při správě financí.

Reklama
Reklama
Obrázek ke článku Velké srovnání TOP e-shopových řešení!

Velké srovnání TOP e-shopových řešení!

Předmět případové studie je ​středně velký e-shop​ s počtem produktů do 5 000, který chce expandovat na slovenský trh a potřebuje ​druhou jazykovou mutaci v eurech ​na vlastní doméně.

Výběr vhodného systému závisí na mnoha aspektech a měl by být pečlivě zvážen na základě potřeb a konkrétních požadavků plánovaného nebo migrovaného e-shopu.

Obrázek ke článku Master Data Management a jak nám pomůže

Master Data Management a jak nám pomůže

Master Data (česky také kmenová data) jsou data sdílená napříč různými systémy, nemění se příliš často a netransakční. Jedná se o informace o obchodních partnerech, produktech, vlastních pracovnících. Objednávky, faktury, účetní zápisy do této oblasti nespadají.

Obrázek ke článku Startup DoDo zajistí městskou logistiku pro RunCzech

Startup DoDo zajistí městskou logistiku pro RunCzech

Startup DoDo se stává důležitým partnerem RunCzecha na významných běžeckých závodech včetně 25. ročníku Volkswagen Maratonu Praha se bude starat o logistické zázemí. Lídr v oblasti městské logistiky bude mimo jiné zásobovat občerstvovací stanice a pomůže rovněž se zajištěním televizních přenosů ze závodů.

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