jak odeslat formuláře AJAX s JQuery

Úvod

jQuery lze spárovat s odesláním formuláře pro zpracování ověření. To má tu výhodu, že poskytuje uživatelům zpětnou vazbu o případných chybách v jejich vstupu.

 animovaný gif zobrazující uživatele vyplňující vstupy ve formuláři a přijímající zprávu o úspěchu.

v tomto tutoriálu se zobrazí ukázkový formulář, který komunikuje s PHP backendem. Formulář použije jQuery ke zpracování formuláře bez obnovení stránky (pomocí AJAXu), označení chyb a také zobrazení zprávy o úspěchu.

předpoklady

k dokončení tohoto tutoriálu budete potřebovat:

  • tento výukový program předpokládá, že máte PHP nainstalován lokálně a jsou schopni spustit vestavěný webový server. Možná budete mít možnost nahlédnout do jednoho z našich tutoriálů pro instalaci PHP ve vašem prostředí.
  • některé znalosti s selektory a metodami z knihovny jQuery.
  • některé znalosti tříd z knihovny Bootstrap.
  • editor kódu.
  • moderní webový prohlížeč.

Poznámka: Tento tutoriál nespecifikuje nejnovější verze jQuery (v současné době 3.5.1) nebo Bootstrap (v současné době 5.0.0-beta1). Mnoho lekcí v tomto tutoriálu se však stále týká nejnovějších verzí.

tento tutoriál byl ověřen pomocí PHP V7. 3. 24, jQuery v2. 0. 3 a Bootstrap v3. 0. 3.

Krok 1-Vytvoření backendu pomocí PHP

pro účely tohoto tutoriálu bude backend napsán v PHP.

nejprve otevřete okno terminálu a vytvořte nový adresář projektu:

  • mkdir jquery-form-validation

přejděte do tohoto nového adresáře projektu:

  • cd jquery-form-validation

poté pomocí editoru kódu vytvořte nový soubor process.php:

proces.php
<?php$errors = ;$data = ;if (empty($_POST)) { $errors = 'Name is required.';}if (empty($_POST)) { $errors = 'Email is required.';}if (empty($_POST)) { $errors = 'Superhero alias is required.';}if (!empty($errors)) { $data = false; $data = $errors;} else { $data = true; $data = 'Success!';}echo json_encode($data);

tento soubor bude mít hodnoty pro name, email A superheroAlias. Pokud některá z těchto hodnot není poskytnuta, bude odeslána chybová zpráva. V tomto okamžiku lze provést mnoho dalších ověření, ale pro účely tohoto tutoriálu zajistíte pouze poskytnutí těchto požadovaných vstupů. V opačném případě, pokud je přítomna hodnota pro name, email A superheroAlias, bude zpráva o úspěchu odeslána zpět.

Poznámka: Ve scénáři v reálném světě by backend byl také zodpovědný za další úkoly, jako je převzetí dat a ukládání změn do databáze, vytvoření relace nebo odeslání e-mailu.

Nyní, když máte zpracování formuláře dokončeno, můžete formulář vytvořit.

Krok 2-Vytvoření frontendu pomocí HTML a CSS

pro účely tohoto tutoriálu bude Bootstrap použit k sestavení zobrazení.

v adresáři projektu použijte editor kódu k vytvoření souboru index.html:

index.html
<!DOCTYPE html><html> <head> <title>jQuery Form Example</title> <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css" /> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script></head> <body> <div class="col-sm-6 col-sm-offset-3"> <h1>Processing an AJAX Form</h1> <form action="process.php" method="POST"> <div class="form-group"> <label for="name">Name</label> <input type="text" class="form-control" name="name" placeholder="Full Name" /> </div> <div class="form-group"> <label for="email">Email</label> <input type="text" class="form-control" name="email" placeholder="[email protected]" /> </div> <div class="form-group"> <label for="superheroAlias">Superhero Alias</label> <input type="text" class="form-control" name="superheroAlias" placeholder="Ant Man, Wonder Woman, Black Panther, Superman, Black Widow" /> </div> <button type="submit" class="btn btn-success"> Submit </button> </form> </div> </body></html>

bude odkazováno na verzi Bootstrap a jQuery CDN (content delivery network). Formulář action bude nastaven na soubor PHP, který byl vytvořen dříve. Formulář se bude skládat z polí pro name, email A superheroAlias. Formulář bude také potřebovat tlačítko Odeslat.

otevřete okno terminálu a přejděte do adresáře projektu. A spusťte PHP server:

  • php -S localhost:8000

navštivte localhost:8000 ve svém webovém prohlížeči a dodržujte následující:

Screenshot formuláře s poli Pro Jméno, e-mail a Alias superhrdiny.

Nyní, když máte formulář vyplněný, můžete vytvořit skript pro zpracování odeslání formuláře.

Krok 3-zpracování formuláře odeslat logiku v JavaScriptu a jQuery

Chcete-li odeslat formulář přes AJAX, váš skript bude muset zvládnout čtyři úkoly:

  • Zachyťte tlačítko odeslat formulář, aby nedošlo k výchozí akci.
  • získejte všechna data z formuláře pomocí jQuery.
  • odešlete data formuláře pomocí AJAX.
  • zobrazit chyby, pokud existují.

v adresáři projektu použijte editor kódu k vytvoření nového souboru form.js:

formulář.js
$(document).ready(function () { $("form").submit(function (event) { var formData = { name: $("#name").val(), email: $("#email").val(), superheroAlias: $("#superheroAlias").val(), }; $.ajax({ type: "POST", url: "process.php", data: formData, dataType: "json", encode: true, }).done(function (data) { console.log(data); }); event.preventDefault(); });});

tento kód načte data z polí name, email A superheroAlias. Poté provede požadavek AJAX na process.php s užitečným zatížením dat formuláře. Po úspěšném připojení konzola zaznamená data odezvy. event.preventDefault() se používá k zabránění chování formuláře ve výchozím nastavení opětovným načtením stránky při odeslání.

po uložení změn do form.js znovu navštivte soubor index.html pomocí editoru kódu. Přidejte odkaz na nový soubor JavaScriptu:

index.html
<!DOCTYPE html><html> <head> <title>jQuery Form Example</title> <!-- ... --> <script src="form.js"></script></head><!-- ... -->

Nyní, když uživatel stiskne tlačítko Odeslat na formuláři, kód JavaScript načte všechny vstupní hodnoty a odešle požadavek na příspěvek na process.php.

Poznámka: budete používat .done zpětné volání zpracovat úspěšný požadavek AJAX. To se dříve nazývalo .success, ale od té doby bylo v jQuery 1.8+zastaralé.

další alternativou je použít serialize místo toho, aby se informace o formuláři vytahovaly jednotlivě.

PHP skript zpracuje vstupy, které odeslal hovor AJAX, a vrátí pole $data, které bylo vytvořeno. Můžete to sledovat v konzole prohlížeče po odeslání formuláře:

Screenshot webové konzole DevTools v prohlížeči zobrazující data vrácená při odeslání formuláře-úspěch: pravda, zpráva: úspěch!

Nyní, když máte vyplněnou logiku formuláře, můžete vytvořit skript pro zpracování chyb formuláře.

Krok 4-zobrazení chyb ověření formuláře

ve skriptu PHP kód zkontroluje, zda jsou požadována všechna pole. Pokud pole není přítomno, chyba je odeslána zpět.

znovu zadejte form.js a přidejte následující zvýrazněné řádky kódu:

formulář.js
// ... $.ajax({ type: "POST", url: "process.php", data: formData, dataType: "json", encode: true, }).done(function (data) { console.log(data); if (!data.success) { if (data.errors.name) { $("#name-group").addClass("has-error"); $("#name-group").append( '<div class="help-block">' + data.errors.name + "</div>" ); } if (data.errors.email) { $("#email-group").addClass("has-error"); $("#email-group").append( '<div class="help-block">' + data.errors.email + "</div>" ); } if (data.errors.superheroAlias) { $("#superhero-group").addClass("has-error"); $("#superhero-group").append( '<div class="help-block">' + data.errors.superheroAlias + "</div>" ); } } else { $("form").html( '<div class="alert alert-success">' + data.message + "</div>" ); } }); event.preventDefault(); });// ...

tento kód zkontroluje, zda odpověď obsahuje chybu pro každé pole. Pokud je přítomna chyba, přidá třídu has-error a připojí chybovou zprávu.

nyní znovu otevřete svůj formulář ve webovém prohlížeči a experimentujte s odesíláním dat pomocí formuláře.

pokud se vyskytnou nějaké chyby, které se vrátí ze serveru, formulář poskytne zpětnou vazbu k požadovaným polím:

Screenshot ukázkového formuláře zobrazujícího chyby pro vstupní pole jména, e-mailu a aliasu superhrdiny.

a pokud se ze serveru nevrátí žádné chyby, formulář poskytne zpětnou vazbu pro úspěšné odeslání:

Screenshot ukázkového formuláře zobrazujícího zprávu o úspěchu.

pokaždé, když odešleme formulář, naše chyby z našeho předchozího podání stále existují. Budete je muset vymazat jejich odstraněním, jakmile bude formulář znovu odeslán.

znovu zadejte form.js a přidejte následující zvýrazněné řádky kódu:

formulář.js
// ... $("form").submit(function (event) { $(".form-group").removeClass("has-error"); $(".help-block").remove(); // ... });// ...

tento kód odstraní třídu has-error ze všech prvků .form-group. Odstraní také všechny prvky .help-block s chybovými zprávami.

Krok 5-zobrazení chyb připojení serveru

pokud dojde k chybě při připojení k serveru, nebude z volání AJAX žádná odpověď JSON. Chcete-li zabránit uživatelům čekat na odpověď, která nikdy nepřijde, můžete poskytnout chybovou zprávu o selhání připojení.

znovu zadejte form.js a přidejte následující zvýrazněné řádky kódu:

formulář.js
// ... $.ajax({ type: "POST", url: "process.php", data: formData, dataType: "json", encode: true, }) .done(function(data) { // ... }) .fail(function (data) { $("form").html( '<div class="alert alert-danger">Could not reach server, please try again later.</div>' ); });// ...

pokud je server z jakéhokoli důvodu přerušený nebo nefunkční, uživateli, který se pokusí odeslat formulář, se zobrazí chybová zpráva:

Screenshot ukázkového formuláře zobrazujícího chybovou zprávu o tom, že se nemůžete dostat na server.

Nyní, když máte chybovou zprávu serveru kompletní, vyplnili jste vzorový formulář.

pomocí $.příspěvek místo $.ajax

jQuery také poskytuje $.post zkratkovou metodu jako alternativu k $.ajax.

kód $.ajax v form.js lze přepsat pomocí $.post:

$.post('process.php', function(formData) { // place success code here}) .fail(function(data) { // place error code here });

výhodou $.post je, že nevyžaduje tolik konfigurace připojení, které mají být deklarovány.

závěr

v tomto článku jste vytvořili vzorový formulář, který komunikuje s PHP backendem s jQuery a zobrazuje všechny chyby ve formuláři.

jako další krok budete chtít prozkoumat složitější ověření, jako jsou platné e-mailové adresy a data. Také by vás mohlo zajímat použití validací na straně klienta, které fungují v prohlížeči.

pokud se chcete dozvědět více o JavaScriptu, podívejte se na naši stránku s tématem JavaScript pro cvičení a programovací projekty.

Leave a Reply

Vaše e-mailová adresa nebude zveřejněna.