Form se s ajaxem nesubmitne, bez ajaxu vše funguje
- Clawiste
- Člen | 2
Zdravim,
potřeboval bych nějak poradit. Snažim se zajaxovat formulář a bez ajaxu se formulář bez probmému submitne, ale s ajaxem se submit vůbec nezavolá.
používám nette.ajax.js, a u sebe ho akorát zinituju
Ajax mi vyhodí tenhle odkaz:
type%5B%5D=1&type%5B%5D=4&price=0&foodQuantity=0&do=chooseFoodsForm-chooseFoods-submit&send=Vybrat&
protected function createComponentChooseFoods() {
$form = new Form();
$form->getElementPrototype()->class('ajax');
...
foreach($sliders as $key => $slider) {
$form['price'] = new \CustomForms\Slider($slider, $key, $priceValues);
}
$form->addCheckboxList('type', 'Kategorie', $types);
$form->addSelect('foodQuantity', 'Počet jídel', [3,6,9]);
$form->addSubmit('send', 'Vybrat');
$form->onSubmit[] = $this->chooseFoodsSubmit;
return $form;
}
public function chooseFoodsSubmit($values, $form) {
...
if (!$this->isAjax())
$this->redirect('this');
else {
$this->redrawControl('chooseFoodsForm');
}
}
Díky
- Clawiste
- Člen | 2
No, jelikož ať tam dělám co tam dělám tak se nic neděje, když tam
nechám jen samotnej $this->redirect('this');
bez kontroly
jestli to je ajax či ne tak se nic nestane, a když tam přidám to
$form->setValues([], TRUE);
tak hodnoty zustanou vyplněný…
Můžu klidně zavolat i neexistující funkci a žádnej error mi to nehodí
(po odeslání formuláře).
- Šaman
- Člen | 2659
To ti nevyhodí – AJAX se ladí trochu složitěji. Ta stránka už je vykreslená a AJAXový požadavek probíhá na pozadí, takže neočekávej klasickou laděnku v okně prohlížeče. Když je chyba v ajaxovém requestu, tak prostě přijde nová (třeba chybová) stránka a AJAX jen zkontroluje, jestli obsahuje správné snippety. Pokud ne, tak nic nepřekreslí (není čím).
Nicméně ty stránky se normálně logují – podívej se do adresáře
/log
, měly by tam být html soubory pro každý druh chyby (při
opakování už uložené chyby se nový soubor nevytváří – je nutné
nejprve promazat logy).
- Václav Kraus
- Člen | 77
Ajax se ladí pěkně nepěkně.
Doporučuji do Firefoxu doplněk FireLogger. Sám o sobě umí zobrazovat chyby při Ajaxových požadavcích.
Pokud to potřebuješ podrobněji, tak se přes to dají i dumpovat proměnné, viz https://tracy.nette.org/en/#…
Editoval Václav Kraus (27. 12. 2015 16:05)