Výukový program JS

JS HOME Úvod do JS JS Kam vést Výstup JS JS prohlášení Syntaxe JS Komentáře JS JS proměnné JS Let JS Const Operátoři JS JS aritmetika Zadání JS JS datové typy Funkce JS JS objekty Události JS JS struny JS String Methods JS String Search Šablony řetězců JS JS čísla Metody čísel JS JS Arrays Metody JS Array JS Array Sort Iterace pole JS JS Array Const JS Termíny Formáty data JS JS metody získávání data JS metody nastavení data JS Math JS Náhodný JS Booleans JS Srovnání Podmínky JS Přepínač JS JS Loop For JS Loop For In JS Loop For Of Zatímco JS Loop JS Break JS Iterables Sady JS Mapy JS Typ JS Konverze typu JS JS Bitwise JS RegExp Chyby JS Rozsah JS JS Zvedací zařízení Přísný režim JS JS toto klíčové slovo Funkce šipky JS JS třídy JS JSON Ladění JS Průvodce stylem JS JS Best Practices Chyby JS Výkon JS JS Reserved Words

Verze JS

Verze JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge Historie JS

JS objekty

Definice objektů Vlastnosti objektu Objektové metody Zobrazení objektu Objektové přístupové objekty Konstruktory objektů Prototypy objektů Iterovatelné objekty Sady objektů Mapy objektů Reference objektu

Funkce JS

Definice funkcí Funkční parametry Vyvolání funkce Volání funkce Funkce Použít Funkční uzávěry

JS třídy

Úvod do třídy Třídní dědičnost Třída Statická

JS Async

JS zpětná volání JS asynchronní JS Sliby JS Async/Await

JS HTML DOM

Úvod do DOM Metody DOM Dokument DOM Prvky DOM DOM HTML Formuláře DOM DOM CSS DOM animace Události DOM DOM Event Listener Navigace DOM DOM uzly Kolekce DOM Seznamy uzlů DOM

Kusovník prohlížeče JS

Okno JS Obrazovka JS Umístění JS Historie JS JS Navigator Popup Alert JS Časování JS Soubory cookie JS

Webová rozhraní API JS

Úvod do webového rozhraní API Web Forms API Webová historie API Web Storage API Web Worker API Web Fetch API Web Geolocation API

JS AJAX

Úvod do AJAXu AJAX XMLHttp Požadavek AJAX Odpověď AJAX Soubor XML AJAX AJAX PHP AJAX ASP Databáze AJAX Aplikace AJAX Příklady AJAX

JS JSON

Úvod do JSON Syntaxe JSON JSON vs XML Datové typy JSON Analýza JSON JSON Stringify Objekty JSON Pole JSON Server JSON JSON PHP JSON HTML JSON JSONP

JS vs jQuery

Selektory jQuery HTML jQuery jQuery CSS jQuery DOM

Grafika JS

Grafika JS JS Canvas JS Plotly JS Chart.js JS Google Chart JS D3.js

Příklady JS

Příklady JS JS HTML DOM Vstup HTML JS JS HTML objekty JS HTML události Prohlížeč JS Editor JS Cvičení JS JS kvíz Certifikát JS

JS Reference

Objekty JavaScriptu HTML DOM objekty


AJAX – XMLHttpRequest


Objekt XMLHttpRequest se používá k vyžádání dat ze serveru.


Odeslat požadavek na server

K odeslání požadavku na server používáme metody open() a send() XMLHttpRequestobjektu:

xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
Method Description
open(method, url, async) Specifies the type of request

method: the type of request: GET or POST
url: the server (file) location
async: true (asynchronous) or false (synchronous)
send() Sends the request to the server (used for GET)
send(string) Sends the request to the server (used for POST)

Adresa URL – Soubor na serveru

Parametr url open()metody je adresa souboru na serveru:

xhttp.open("GET", "ajax_test.asp", true);

Soubor může být libovolný soubor, například .txt a .xml, nebo serverové skriptovací soubory jako .asp a .php (které mohou provádět akce na serveru před odesláním odpovědi zpět).


Asynchronní – pravda nebo ne?

Požadavky serveru by měly být odesílány asynchronně.

Parametr async metody open() by měl být nastaven na hodnotu true:

xhttp.open("GET", "ajax_test.asp", true);

Při asynchronním odesílání nemusí JavaScript čekat na odpověď serveru, ale může:

  • spouštět další skripty při čekání na odpověď serveru
  • zabývat se odpovědí poté, co je odpověď připravena

Výchozí hodnota parametru async je async = true.

Třetí parametr můžete z kódu bezpečně odebrat.

Synchronní XMLHttpRequest (async = false) se nedoporučuje, protože JavaScript se zastaví, dokud nebude připravena odpověď serveru. Pokud je server zaneprázdněn nebo pomalý, aplikace přestane reagovat nebo se zastaví.


GET nebo POST?

GETje jednodušší a rychlejší než POSTa lze jej použít ve většině případů.

Požadavky POST však vždy používejte, když:

  • Soubor v mezipaměti není možnost (aktualizace souboru nebo databáze na serveru).
  • Odesílání velkého množství dat na server (POST nemá žádná omezení velikosti).
  • Odesílání uživatelského vstupu (který může obsahovat neznámé znaky), POST je robustnější a bezpečnější než GET.

GET požadavky

Jednoduchá GETžádost:

Příklad

xhttp.open("GET", "demo_get.asp");
xhttp.send();

Ve výše uvedeném příkladu můžete získat výsledek uložený v mezipaměti. Chcete-li se tomu vyhnout, přidejte k adrese URL jedinečné ID:

Příklad

xhttp.open("GET", "demo_get.asp?t=" + Math.random());
xhttp.send();

Pokud chcete odeslat informace pomocí GETmetody, přidejte informace do adresy URL:

Příklad

xhttp.open("GET", "demo_get2.asp?fname=Henry&lname=Ford");
xhttp.send();

Jak server používá vstup a jak server odpovídá na požadavek, je vysvětleno v další kapitole.



Požadavky POST

Jednoduchá POSTžádost:

Příklad

xhttp.open("POST", "demo_post.asp");
xhttp.send();

Chcete-li POST data jako formulář HTML, přidejte záhlaví HTTP s setRequestHeader(). Zadejte data, která chcete odeslat v send()metodě:

Příklad

xhttp.open("POST", "ajax_test.asp");
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
Method Description
setRequestHeader(header, value) Adds HTTP headers to the request

header: specifies the header name
value: specifies the header value

Synchronní požadavek

Chcete-li provést synchronní požadavek, změňte třetí parametr v open()metodě na false:

xhttp.open("GET", "ajax_info.txt", false);

Někdy se pro rychlé testování používá async = false. Synchronní požadavky najdete také ve starším kódu JavaScript.

Protože kód bude čekat na dokončení serveru, není potřeba žádná onreadystatechange funkce:

Příklad

xhttp.open("GET", "ajax_info.txt", false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;

Synchronní XMLHttpRequest (async = false) se nedoporučuje, protože JavaScript se zastaví, dokud nebude připravena odpověď serveru. Pokud je server zaneprázdněn nebo pomalý, aplikace přestane reagovat nebo se zastaví.

Moderní vývojářské nástroje se vyzývají, aby varovaly před používáním synchronních požadavků a mohou vyvolat výjimku InvalidAccessError, když nastane.