CakePHP ajax表单更新复制页面
发布时间:2020-12-13 17:19:10 所属栏目:PHP教程 来源:网络整理
导读:我在我的网站上使用Js帮助程序有一个基本的ajax表单,它工作正常但是当有验证错误时,更新回调会复制我的成功div中的整个页面. 成功div: div id="success"/div 提交按钮: echo $this-Js-submit('Send',array( 'before'=$this-Js-get('#sending')-effect('fad
我在我的网站上使用Js帮助程序有一个基本的ajax表单,它工作正常但是当有验证错误时,更新回调会复制我的成功div中的整个页面.
成功div: <div id="success"></div> 提交按钮: echo $this->Js->submit('Send',array( 'before'=>$this->Js->get('#sending')->effect('fadeIn'),'success'=>$this->Js->get('#sending')->effect('fadeOut'),'update'=>'#success','class'=>'btn btn-primary' )); 使用Javascript: $(document).ready(function(){ $('#postkey,#gender,#hair,#location,#message').blur(function(){ $.post( '/Cake_ajax/Posts/validate_form',{ field: $(this).attr('id'),value: $(this).val() } //handleNameValidation ); }); }); 在我的控制器中验证表单功能: public function validate_form(){ if($this->RequestHandler->isAjax()){ $this->request->data['Post'][$this->request['data']['field']] = $this->request['data']['value']; $this->Post->set($this->request->data); if($this->Post->validates()){ $this->autorender = FALSE; // don't render a view $this->set('error',''); }else{ $this->layout ="ajax"; $this->autoRender = FALSE; $error = $this->validateErrors($this->Post); $this->set('error',$this->Post->validationErrors[$this->request['data']['field']][0]); } } } 我不知道这是否有足够的信息继续下去,如果我需要发布更多代码,请告诉我. 谢谢. 解决方法
我刚刚使用你的zip文件测试了你的应用程序.
我观察到的是,这不是放在#success div中的整个页面,而只是Posts / add.ctp视图的内容. 也就是说,提交按钮当前正在获取Posts / add.ctp视图的内容并将其插入空的#success div中.但是你永远不会删除页面上已有的表单. 在您的情况下,只需更新#content而不是#success div可能适合您的需求: echo $this->Js->submit('Send',array( 'before'=>$this->Js->get('#sending')->effect('fadeIn'),'update'=>'#content','class'=>'btn btn-primary','controller'=>'posts','action'=>'add' )); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |