AJAX update formuláře

Webové rozhraní je již téměř ekvivalentní standardnímu desktopovému rozhraní. Je možné, že formuláře budou brzy založené především na AJAX komunikaci se serverem a současný způsob jejich zpracování postupně ustoupí? Nároky na uživatelská rozhraní se stále zvyšují. Cení se také rychlost odezvy a snižování nároků na server. Jediný problém by mohl být ve zdánlivé komplikovanosti tohoto způsobu zpracování formulářů. V následujícím příspěvku uvádím skripty pro obsluhu formuláře AJAXem, avšak s validací na straně serveru.

Ukázka AJAX formuláře

index.php

Validaci jsem v našem případě umístil do volaného php skriptu. Je to poněkud netradiční, ale jinak velmi spolehlivý způsob jak kontrolovat data z odeslaného formuláře. Alespoň máte ještě pocit, že je nějaký prostor pro php.

ajax-form-update.php

 

Jak oba skripty fungují?

Po stisknutí tlačítka sumbit dojde ke spuštění javascriptu:

Ve druhém řádku vidíte způsob jak zajistit, aby nedošlo ke standardnímu odeslání formuláře.

Data z formuláře načteme funkcí val() a sice do pole formData.

Data formData odešleme metodou POST a sice php skriptu ajax-form-update.php. Ten poté pracuje přímo s $_POST[‚kod_produktu‘] a $_POST[‚nazev_produktu‘].
Z php odešleme zprávu ve formátu json, což bude javascript očekávat díky uvedení v položce dataType. JSON = JavaScript Object Notation a vypadá např. takto:

JSON je všude a dle mého názoru kvalitně vytlačí XML, kterému jsem nikdy nepřišel na chuť.

Dříve se pro vyhodnocení odezvy serveru používaly funkce success: a error:. Nyní jsou nahrazené funkcemi done() a fail(). (Můžete je zřetězit i s funkcí always(), která se vykonává vždy.) Funkce done() je volána při úspěšném vykonání php skriptu ajax-update-form.php. Funkce fail se vykoná pokud přijde jakákoliv jiná odezva než 200.

Je nutné správně rozlišovat mezi chybami způsobenými komunikací se serverem a chybami způsobenými při vyplňování formuláře. Pole errors, které generuji ve skriptu ajax-form-update.php nemá s chybami na které reaguje funkce fail() naprosto nic společného!

Povšimněte si zejména, jak lze zobrazovat chybně zadané hodnoty do formuláře pomocí jednoduché iterace pole errors:

Chyby způsobené komunikací se serverem se snažím poslat na výstup do konzole a mohu je sledovat pomocí FireBug.

 

Balíček s výše uvedenými skripty obsahuje také soubor data.txt, do kterého zapisuje ajax-form-update.php vstupní data při úspěšné obsluze formuláře.

Na otázku zda AJAXem obsluhované formuláře vytlačí standardně zpracovávané formuláře neznám samozřejmě odpověď, ale každopádně vnímám poměrně velký tlak na postupné zavádění takto obsluhovaných formulářů.