Přejít na hlavní obsah

Jak odeslat post žádost bez aktualizace stránky: podrobný návod

Post dotazy jsou jednou z hlavních metod přenosu dat v síti a jsou široce používány webovými vývojáři. Jednou z běžných možností použití post dotazů je odeslání dat formuláře na server bez aktualizace stránky. To je zvláště užitečné pro vytváření interaktivních webových aplikací a dynamických webů.

V tomto článku se podíváme na podrobný návod, jak odeslat post požadavek bez aktualizace stránky. Ukážeme vám, jak používat JavaScript a XMLHttpRequest k vytvoření dotazu a zpracování odpovědi a vysvětlíme důležité aspekty zabezpečení při odesílání dat prostřednictvím post.

Kromě toho se podíváme na některé běžné problémy, se kterými se můžete setkat při práci s požadavky na post, a poskytneme řešení, jak je vyřešit. Po přečtení tohoto článku budete připraveni odeslat dotazy post bez aktualizace stránky a využít tuto výkonnou příležitost ve svých webových projektech.

Co je post-dotaz?

Na rozdíl od požadavku GET, který přenáší parametry v řádku URL, požadavek POST odesílá data v těle dotazu. V tomto případě je požadavek POST bezpečnější, protože data se nezobrazují na adrese URL a nejsou uložena v historii prohlížeče.

Požadavek POST může obsahovat různé typy dat, jako je text, obrázky, zvuk nebo video soubory. Pro přenos dat se v dotazu POST používá MIME typ application/x-www-form-urlencoded nebo multipart/form-data.

Dotazy POST se často používají spolu s formami HTML, kde uživatel zadává data, která mají být odeslána na server. POST dotaz vám umožňuje ukládat, aktualizovat nebo mazat informace a provádět další operace na straně serveru.

Po obdržení požadavku POST server zpracovává data a může vrátit odpověď, kterou lze použít k aktualizaci obsahu stránky bez jejího úplného restartování.

POST /example.php HTTP/1.1Host: www.example.comContent-Type: application/x-www-form-urlencodedContent-Length: 27username=johndoe&password=123

V tomto příkladu odesíláme požadavek na POST server na adresu www.example.com/example.php. V těle dotazu předáváme dva parametry - username s významem "johndoe" a password s hodnotou "123".

Proč odesílat požadavky na post bez aktualizace stránky?

Když uživatel vyplní formulář na webové stránce a klikne na tlačítko Odeslat, informace obsažené ve formuláři jsou obvykle odeslány na server metodou post. Odeslání dotazu post bez aktualizace stránky Umožňuje serveru zpracovat přijatá data a vrátit výsledky, které lze poté zobrazit na webové stránce bez restartu. Díky tomu je web citlivější a příjemnější pro uživatele.

Post dotazy bez aktualizace stránky jsou také užitečné při vývoji webových aplikací, jako jsou online chaty nebo dynamické formuláře. V těchto případech vám odesílání požadavků post umožňuje aktualizovat obsah stránky v reálném čase, aniž byste museli aktualizovat celou stránku. To zvyšuje výkon a zlepšuje uživatelský zážitek.

Jak odeslat post dotaz bez aktualizace stránky pomocí JavaScriptu?

Odesílání dotazu bez aktualizace stránky je možné pomocí technologie AJAX (Asynchronous JavaScript and XML). AJAX umožňuje asynchronně komunikovat se serverem, aniž by bylo nutné restartovat celou stránku. Podívejme se na jednoduchý příklad odeslání dotazu po odeslání pomocí JavaScriptu:

KrokPopisPříklad kódu
1Vytvořit objekt XMLHttpRequest var xhr = new XMLHttpRequest();
2Nastavit metodu a adresu pro odeslání dotazu xhr.open('POST', 'http://example.com/api', true);
3Nastavit hlavičku Content-Type a další potřebné záhlaví xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('Authorization', 'Bearer token');
4Nainstalujte obslužnou rutinu události pro sledování odezvy serveru xhr.onreadystatechange = function() if (xhr.readyState === 4 && xhr.status === 200) console.log(xhr.responseText);
>
>;
5Odeslat data na server xhr.send(JSON.stringify(< key: 'value' >));

V tomto příkladu vytvoříme objekt XMLHttpRequest, nastavíme metodu a adresu pro odeslání dotazu, nastavíme požadované záhlaví, nastavíme obslužnou rutinu události pro sledování odpovědi serveru a odešleme data na server.

Všimněte si, že v příkladu odesíláme data ve formátu JSON pomocí metody JSON.stringify . Data můžete také odeslat v jiných formátech, například ve formě kódovaných parametrů URL nebo FormData. V závislosti na požadavcích vašeho serveru možná budete muset změnit název obsahu-Type podle toho.

Po odeslání dotazu, můžete získat odpověď Serveru ve zpracování události XHR.onreadystatechange . V tomto příkladu jednoduše zobrazíme odpověď serveru do konzole, ale s přijatými daty můžete provádět jakékoli další operace.

Tímto způsobem můžete odeslat POST dotaz bez aktualizace stránky pomocí JavaScriptu a Ajaxu. To může být užitečné, když potřebujete odeslat data na server a aktualizovat pouze část stránky, místo restartování celé stránky.

Krok 1. Vytvoření objektu XMLHttpRequest

K vytvoření objektu XMLHttpRequest se používá následující kód:

var xhr = new XMLHttpRequest();

Tento řádek kódu vytvoří novou instanci objektu XMLHttpRequest a přiřadí jej proměnné xhr.

Dále můžete tento objekt použít k odesílání požadavků na server, přijímání odpovědi a aktualizaci částí stránky na základě této odpovědi.

Krok 2. Vytvoření funkce pro zpracování odpovědi serveru

Po odeslání požadavku POST na server musíme vytvořit funkci, která zpracuje odpověď přijatou ze serveru. Tato funkce bude volána po obdržení odpovědi a obsahuje logiku, která bude provedena v závislosti na obsahu odpovědi.

Zde je příklad funkce pro zpracování odpovědi serveru:

FunkcePopis
function handleResponse(response) Funkce přijímá možnost response, což je odpověď ze serveru.
const status = response.status; Proměnná status obsahuje stavový kód odpovědi serveru (např. 200 pro úspěšný dotaz).
if (status === 200) Pokud je stavový kód 200, znamená to, že dotaz byl úspěšný a můžeme odpověď nadále zpracovávat.
const data = response.json(); K převodu odpovědi na objekt JavaScriptu můžeme použít funkci json ().
console.log(data); V příkladu jednoduše zobrazíme přijatá data do konzole prohlížeče, ale můžete je použít, jak chcete.
> else Pokud stavový kód není 200, znamená to, že žádost skončila neúspěchem a tuto situaci musíme podle toho zpracovat.
console.error ("Chyba:" + status); V příkladu jednoduše zobrazíme chybovou zprávu v konzoli prohlížeče, ale při neúspěšném dotazu můžete podniknout další kroky.
> Dokončení funkce.

Tato funkce je příkladem a může být změněna podle požadavků vašeho projektu. Je důležité si uvědomit, že jejím cílem je zpracovávat odpovědi ze serveru a provádět příslušné akce v závislosti na situaci.

Krok 3. Odeslání žádosti o post

Jakmile nainstalujete obslužnou rutinu události na tlačítko,můžete začít odesílat POST dotaz. K tomu budete muset použít funkci fetch.

Fetch je moderní API pro práci se sítí zabudovanou do prohlížeče. Umožňuje odesílat dotazy a přijímat odpovědi bez aktualizace stránky.

Chcete-li odeslat POST dotaz, musíte vytvořit konfigurační objekt a přenést jej do funkce fetch. V konfiguračním objektu je nutné zadat metodu dotazu (v tomto případě POST), nadpisy a tělo dotazu.

Zde je příklad kódu, který odešle POST požadavek na zadanou adresu URL:

fetch('https://example.com/api', ,body: JSON.stringify()>).then(response => response.json()).then(data => ).catch(error => );

V tomto příkladu odešleme post požadavek na adresu URL 'https://example.com/api' s uvedenými hlavičkami Content-Type: 'application / json' a tělem dotazu ve formátu JSON.

Po odeslání žádosti používáme metodu .json () pro získání dat z odpovědi a jejich výstup do konzole pomocí funkce console.log.

Pokud dojde k chybě při odesílání dotazu nebo přijímání odpovědi, použili jsme metodu .catch() pro tisk chyby v konzoli.

Nyní máte základ pro odeslání dotazu POST bez aktualizace stránky. Zbývá pouze vyplnit objekt-konfiguraci svými daty a adresou URL.

Příklad kódu pro odeslání požadavku post bez aktualizace stránky

Chcete-li odeslat post dotaz bez aktualizace stránky, můžete použít JavaScript ve spojení s objektem XMLHttpRequest. Zde je příklad kódu, který tuto funkci demonstruje:

function sendPostRequest(url, data)  >;xhr.send(data);>

Chcete-li odeslat post dotaz, musíte zavolat funkci sendPostRequest a předat ji dvěma možnostem: url obsahující adresu URL, na kterou bude dotaz odeslán, a data obsahující data, která mají být odeslána. Data můžete formátovat jako řetězec ve formátu x-www-form-urlencoded.

Po úspěšném odeslání dotazu post bude vyvolána funkce onreadystatechange a vlastnost readyState objektu XMLHttpRequest bude mít hodnotu 4 a vlastnost status bude mít hodnotu 200. V rámci této funkce můžete provést potřebné kroky při úspěšném odeslání požadavku post, jako je aktualizace obsahu stránky nebo zobrazení zprávy o úspěšném odeslání požadavku.