isAjax – je opravdu třeba?
- Desttro
- Člen | 126
Zdravím,
mam jednoduchou otázku, je třeba kontrolovat, zda je dostupný ajax pomocí
isAjax() funkce?
Zkoušel jsem odeslat formulář bez kontroly, a prohližeč se refreshnul v pořádku. Tak uvažuji, zda je lepší použít kratší kód:
protected function createComponentContactForm()
{
$form = $this->contactFormFactory->create();
$form->onSuccess[] = function (Nette\Application\UI\Form $form)
{
$this->flashMessage('Zpráva byla odeslána', 'alert-success');
$this->redrawControl('contact');
$form->setValues([], TRUE); // clear form
};
return $form;
}
Místo delšího zápisu:
protected function createComponentContactForm()
{
$form = $this->contactFormFactory->create();
$form->onSuccess[] = function (Nette\Application\UI\Form $form)
{
$this->flashMessage('Zpráva byla odeslána', 'alert-success');
if (!$this->isAjax())
$this->redirect('this');
else
{
$this->redrawControl('contact');
$form->setValues([], TRUE); // clear form
}
};
return $form;
}
Je už někde v jádru kontrola zavedená, nebo mi uniká, k čemu isAjax() funkce je?
- Šaman
- Člen | 2659
Desttro napsal(a):
Zkoušel jsem odeslat formulář bez kontroly, a prohližeč se refreshnul v pořádku.
Tak to zkus s vypnutými (nebo nenačtenými) scripty – tedy nasimulovat to bez AJAXu. Předpokládám, že se neprovede ten redirect, tedy zůstaneš na nebezpečné mezistránce (každý refresh znovu odešle formulář, nebo zkusí provést signál).
- Desttro
- Člen | 126
Šaman napsal(a):
Tak to zkus s vypnutými (nebo nenačtenými) scripty – tedy nasimulovat to bez AJAXu. Předpokládám, že se neprovede ten redirect, tedy zůstaneš na nebezpečné mezistránce (každý refresh znovu odešle formulář, nebo zkusí provést signál).
Právě že refresh proběhne v pořádku, i flashMessage „Zpráva byla odeslána“ se zobrazí nad formulářem.
Je pravda že Tracy neudělá redirect – možná se jedná o tu nebezpečnou mezistránku, jak píšeš
Bez Ajaxu:
S Ajaxem:
Editoval Desttro (5. 1. 2017 7:30)
- Tharos
- Člen | 1030
To volání redirect
v případně ne-AJAXového requestu je
implementace konceptu Post/Redirect/Get.
Silně doporučuji ten koncept ctít, přináší to spoustu výhod.