ajaxový formulář nedaří se odeslat

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
kovarik.t
Člen | 18
+
0
-

Ahoj, snažím se rozchodit formulář odeslaný ajaxem a nedaří se. Peru se s tim prvně a javascript neni moje silná stránka.
Neajaxově vše funguje
Za pomoc předem děkuji.

Používám nette.ajax.js a jquery 1.8

initcializace:
$(function () {
$.nette.init();
});

protected function createComponentPasswordForm()
    {
        $heslo = new Form;
        $heslo->getElementPrototype()->class[] = "ajax form-horizontal";

        $heslo->addPassword('old', 'Stávající heslo:')
                ->setRequired('Zadejte Stávající heslo')
                ->setAttribute('class', 'form-control');

        $heslo->addPassword('new', 'Nové heslo:')
                ->setRequired('Zadejte Nové heslo')
                ->addRule(Form::MIN_LENGTH, 'Heslo musí mít alespoň %d znaky', 3)
                ->setAttribute('class', 'form-control');

        $heslo->addPassword('confirm', 'Heslo znovu:')
                ->setRequired('Zadejte Potvrďte heslo')
                ->addRule(Form::MIN_LENGTH, 'Heslo musí mít alespoň %d znaky', 3)
                ->setAttribute('class', 'form-control');

        $heslo->addSubmit('savePassword', 'Ulož')
                        ->setAttribute('class', 'btn btn-primary')
                ->onClick[] = callback($this, 'savePassword');
        //$heslo->addProtection();
        return $heslo;
    }

	public function savePassword($button)
    {
        $values = $button->getForm()->getValues(TRUE);

            if (!$this->presenter->isAjax())
            {
                $this->presenter->flashMessage('Není AJAXOVĚ.', 'alert alert-warning');
                $this->redirect('this');
            }
            else
            {
                $this->presenter->flashMessage('AJAXOVĚ.', 'alert alert-success');
                $heslo->setValues(array(), TRUE);
                $this->redrawControl();
            }

    }
{snippet}
    {control passwordForm}
{/snippet}

konzole vyhodí:

POST http://localhost/admin/?… 500 (Internal Server Error) jquery.min.js:2
send jquery.min.js:2
v.extend.ajax jquery.min.js:2
ajax nette.ajax.js:219
inner.requestHandler nette.ajax.js:48
v.event.dispatch jquery.min.js:2
o.handle.u jquery.min.js:2

Editoval kovarik.t (6. 2. 2014 22:33)

jiri.pudil
Nette Blogger | 1029
+
0
-

Ten request by ti měl vrátit hlavičku X-Nette-Error-Log obsahující cestu k Laděnce. V tomhle případě bych si tipl, že je problém v nedefinované proměnné $heslo v metodě savePassword. Měl bys tam použít $this['passwordForm'] (edit: nebo $button->form).

Editoval jiri.pudil (7. 2. 2014 9:27)

kovarik.t
Člen | 18
+
0
-

Ano měl jsi pravdu dělalo to $heslo. Sem trouba…
Taky jsem nevěděl že chyby ajaxu se vypisují do logu to by mi asi lecos objasnilo… Díky.