form error codeigniter ajax php


form error codeigniter ajax php

你好,我正在尝试使用 ajax 和 codeigniter 发送邮件。一切都很好,但形式错误没有字,如果有人有想法,谢谢!

<script>
$(function() {
$('#mail').submit(function(e){
  e.preventDefault();
  var form_data = {
   name: $('#name').val(),
   email: $('#email').val(),
   message: $('#message').val()
  };
  $.ajax({
        url : '<?php echo base_url('contact/send_email'); ?>',
        data : form_data,
        type : 'POST',
        dataType : 'JSON',
        success: function(result) {
            if(result.valid == 1)
            {
                $('#mail').prepend('<div id="success" class="alert alert-success">Success</div>');
                $('#success').fadeOut(5000);
            }
            else
            { 
                $('#mail').prepend('<div id="error" class="alert alert-danger">Error</div>');
                $('#error').fadeOut(5000);
            }
        }
    })
});
});
</script>

这是我的控制器:

        public function send_email() {
            $result = array();
            $this->load->library('form_validation');
            $this->form_validation->set_error_delimiters('<div id="error">', '</div>');
            $this->form_validation->set_rules('name','Name','trim|required|xss_clean');
            $this->form_validation->set_rules('email','Email Address','trim|required|xss_clean');
            $this->form_validation->set_rules('message','Message','trim|required|xss_clean');
            if ($this->form_validation->run() == FALSE) {
                $result['valid'] = 0;
                $data['success'] = '';
                $this->lang->load('header');
                //$this->lang->load('contact');
                $this->lang->load('footer');
                $this->load->view('includes/header', array('app_name' => 'contact', 'csrf_token_name' => $this->security->get_csrf_token_name(), 'csrf_hash' => $this->security->get_csrf_hash()));
                $this->load->view('contact', $data);
                $this->load->view('includes/footer');
            }
            else
            {
                $this->lang->load('header');
                //$this->lang->load('contact');
                $this->lang->load('footer');
                $this->load->view('includes/header', array('app_name' => 'contact', 'csrf_token_name' => $this->security->get_csrf_token_name(), 'csrf_hash' => $this->security->get_csrf_hash()));
                $this->load->view('contact', $data);
                $this->load->view('includes/footer');
                $result['valid'] = 1;
                $data['success'] = 'Email envoyer avec succés';
                $this->load->library('form_validation');
                $this->load->library('email');
                $this->email->from($this->input->post('email'), $this->input->post('name'));
                $this->email->to('lauriaweb@gmail.com');
                $this->email->subject('Message de PoP-Stream');
                $this->email->message($this->input->post('message'));
                $this->email->send();
            }
            die(json_encode($result));
        }
    }

我不明白如何犯错误,我失去了^^

提前感谢!

你只在代码中标记分隔符

$this->form_validation->set_error_delimiters('<div id="error">', '</div>');

这不会显示错误,而只会用 id 'error' 的div 包装它们。要显示它们,您必须将以下内容添加到您的视图中

<?php echo validation_errors(); ?>

下面提到了可以实现相同目的的其他方法。

<?php echo validation_errors('<div class="error">', '</div>'); ?>

否则,您将无法看到验证错误。您还可以将单个错误显示为

<?php echo form_error('field name', '<div class="error">', '</div>'); ?>

在此处阅读更多内容

http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html