Zend форма проверки AJAX при отправке - PullRequest
3 голосов
/ 11 апреля 2011

В настоящее время я пытаюсь проверить форму Zend с помощью ajax и Zend validate одновременно ...

Позвольте мне объяснить, мои формы всплывают в iframe (fancybox), и при отправке мне нужночтобы отобразить сообщение «спасибо», закройте iframe и перенаправьте пользователя.Я планировал использовать проверку ajax для закрытия iframe fancybox в случае успеха.

Я следовал нескольким учебникам http://www.zendcasts.com/ajaxify-your-zend_form-validation-with-jquery/2010/04/, объясняющим, как отрегулировать вашу Zend-форму для отображения ошибок, например, события onblur в textinput.

Все работает, найдите события onblur или over, но когда я указываю событие click на кнопке отправки, я предполагаю, что форма обрабатывается с помощью zend, а проверка ajax не работает ... У вас есть какие-либо подсказки иливы видите очевидные ошибки ??Большое спасибо .... JavaScript:

$(function()
    {
    $('#contact').submit(function()
    {
        doValidation();                 
    });

});

function doValidation()
{
    var url = '/ceramstar/public/contact/validateform';
    var data = {};
    $("input").each(function(){
            data[$(this).attr('name')] = $(this).val();

    });


    $.post(url,data,function(resp)
        {
        //document.write(resp);

                    console.log(resp);
                    alert(resp);
                    //parent.$.fancybox.close();



        },"json");
}

Zend Action:

public function validateformAction()
{

    $this->_helper->viewRenderer->setNoRender();
    $this->_helper->layout->disableLayout();
    $form = new Form_ContactForm();

    $form->isValidPartial($this->_getAllParams());
    //print_r($bool);
    $json = $form->processAjax($this->getRequest ()->getPost ());
    header('Content-type: application/json');
    echo Zend_Json::encode($json);
}

1 Ответ

1 голос
/ 19 апреля 2011

Вы должны вернуть false или protectDefault для .submit

(function() {
    $('#contact').submit(function() {
        doValidation();
        return false;
    }
});
...