如何在不重新加载页面的情况下使Zend_Form提交 - 使用Ajax?

时间:2010-08-15 19:41:08

标签: ajax zend-framework zend-form

如何在不重新加载页面的情况下使Zend_Form提交 - 使用Ajax?

这是创建表单的代码,在提交时重新加载页面,应该更改或添加此表单将使用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;
?>


对于查看:我认为我认为不合适的建议(确实是形成过滤和验证吗?):

<?
echo $this->form;
?>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $('form').submit(function(){
      var sendData=$(this).serialize();
            $.ajax(
                        {
                           url:'',
                           dataType:'json',
                           type:'POST',
                           data:sendData,
                           success: function(data) {                   
                           }
                       });
         return false;
    });
});
</script>

由于

1 个答案:

答案 0 :(得分:1)

那么, 对于过滤/验证,您可能希望使用Ajax发送表单,并在服务器端知道它是一个Ajax请求(您可以使用标志,如标题,搜索知道请求是否是ajax )并仅发回“区域”形式。然后当你收到它时,你可以覆盖它。

我认为目前没有更明智的方法可以使用Zend_Form。