Zkouším odesílání formuláře pomocí ajaxu a tyto odeslaná data
z formuláře chci uložit do databáze, ale nějak se mi to nedaří
zprovoznit.
Bez ajaxová komunikace funguje jak má.
Blbé je, že jsem se nevypisuje žádná chyba, tak nevím kde může být
problém.
Kód v presenteru
protected function createComponentNewMessagesForm() {
$form = new UI\Form;
$form->getElementPrototype()->class('ajax');
$form->addText('message')
->setRequired('Write message');
$form->addHidden("id_messages");
$form->addHidden("id_users_from")
->setValue($this->getUser()->getId());
$form->addHidden("id_rooms")
->setValue($this->id);
$form->addSubmit('send', 'Send');
$form->onSuccess[] = array($this, 'newMessagesFormSucceeded');
return $form;
}
public function newMessagesFormSucceeded(UI\Form $form, $values) {
$this->getModel()->createMessages($values);
if (!$this->isAjax()) {
$this->redirect('Chat:room');
} else {
$this->readrawControl('form');
}
}
jQuery
$("form.ajax").on("submit", function () {
$(this).ajaxSubmit();
return false;
});
$("form.ajax :submit").on("click", function () {
$(this).ajaxSubmit();
return false;
});
V prohlížeči můžeš použít vývojářské nástroje (jsou zpravidla
v nabídce) a v záložce Network se podívat, zda to vůbec na pozadí
komunikuje – pokud ne, problém bude na straně klienta. Pokud na straně
serveru, v Response můžeš vidět chybu.
V prohlížeči můžeš použít vývojářské nástroje (jsou zpravidla
v nabídce) a v záložce Network se podívat, zda to vůbec na pozadí
komunikuje – pokud ne, problém bude na straně klienta. Pokud na straně
serveru, v Response můžeš vidět chybu.
Knihovnu mám i inicializovanou. Když se dívám do záložky Network tak
při odeslání formuláře se odešle GET požadavek, ale typ požadavku je
html ne json neni v tom ten problém?
Přijde mi, že v případě kdy předám do formu třídu:
$form->getElementPrototype()->class('ajax');
tak pak že se vůbec nezavolá funkce newMessagesFormSucceeded(UI\Form
$form, $values)
$form->onError[] = function ($form) {
dump($form->getErrors());
});
Nic nevypisuje, přijde mi, jakoby se prostě vůbec nezavolal ta metoda
newMessagesFormSucceeded jakoby to skončilo na tom formuláři a dál se ty
data nijak nepředají.