CakePHP ajax表单更新复制页面

开发技术 作者: 2024-07-04 10:50:01
我在我的网站上使用Js帮助程序有一个基本的ajax表单,它工作正常但是当有验证错误时,更新回调会复制我的成功div中的整个页面. 成功div: <div id="success"></div> 提交按钮: echo $this->Js->submit('Send', array( 'before'=>$this->Js->get('#sending')->effect('fadeIn'),
我在我的网站上使用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视图的内容.
所以基本上这意味着RequestHandler正确地完成它的工作,这意味着使用的布局是’ajax’布局.
为了摆脱表单中的任何其他内容,add.ctp页面不应包含表单中的任何其他内容.在您的情况下,Posts / add.ctp包含导航链接,这就是它们重复的原因.

也就是说,提交按钮当前正在获取Posts / add.ctp视图的内容并将其插入空的#success div中.但是你永远不会删除页面上已有的表单.
你可以做的是更新包含你的第一个表单的div的内容,甚至是整个Posts / add.ctp视图的内容.

在您的情况下,只需更新#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'
));
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_38400.html