1


1

Ajaxを使用して、ページをリロードせずにZend_Formを送信するにはどうすればよいですか?

Ajaxを使用して、ページをリロードせずにZend_Formを送信するにはどうすればよいですか?

これは、送信時にページを再読み込みするフォームを作成するためのコードです。このフォームがajaxで送信することを変更または追加する必要があります(1.regular solution 2.jquery solution):

形:

class Application_Form_Login extends Zend_Form
{
    public function init()
    {
       $username=new Zend_Form_Element_Text('username');
       $username ->addFilter('StringToLower')
                 ->addValidator('alnum');
       $password=new Zend_Form_Element_Text('password');
       $password->addFilter('StringToLower')
                ->addValidator('alnum');
       $submit=new Zend_Form_Element_Submit('submit');
       $this->addElements(array($username,$password,$submit));
    }
}

コントローラ:

$form = new Application_Form_Login();
        $request = $this->getRequest();
        if ($request->isPost()) {
            if ($form->isValid($request->getPost())) {
                if ($this->_process($form->getValues())) {
                    //code indside
                }
            }
        }
$this->view->form = $form;

見解:

<?
echo $this->form;
?>

'' '' '

'' '' '

私が考えていない私の提案は* View *に対して適切です(フォームはフィルタリングと検証を行いますか?)。

<?
echo $this->form;
?>


$(document).ready(function(){
    $('form').submit(function(){
      var sendData=$(this).serialize();
            $.ajax(
                        {
                           url:'',
                           dataType:'json',
                           type:'POST',
                           data:sendData,
                           success: function(data) {
                           }
                       });
         return false;
    });
});

ありがとう

1 Answer


1


さて、フィルタリング/検証のために、Ajaxを使用してフォームを送信し、サーバー側でそれがAjaxリクエストであることを知ることをお勧めしますかどうか)、フォーム「エリア」のみを送り返します。 それを受け取ったら、上書きできます。

現在、Zend_Formでそれを行う賢明な方法はありません。