如何在不重新加载页面的情况下使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>
由于
答案 0 :(得分:1)
那么, 对于过滤/验证,您可能希望使用Ajax发送表单,并在服务器端知道它是一个Ajax请求(您可以使用标志,如标题,搜索知道请求是否是ajax )并仅发回“区域”形式。然后当你收到它时,你可以覆盖它。
我认为目前没有更明智的方法可以使用Zend_Form。