Ajax在codeigniter 3中不起作用

时间:2017-07-08 17:29:14

标签: php jquery ajax codeigniter

我想在CodeIgniter中进行注册。一切都很好,但是,我想添加Ajax来显示错误和成功消息。但是,它不起作用。以下是我的观点:

<div class="modal-body">

                  <div id="messages"></div>
                  <?php $attributes = array('class' => 'rex-forms', 'name' => 'registrationform', 'id' => 'registrationform'); ?>
                  <?= form_open_multipart('user/register', $attributes); ?>
                      <div class="form-group">
                        <span class="text-danger"><?php echo form_error('username'); ?></span>
                        <input name="username" type="text" class="form-control" placeholder="Имя пользователя">
                      </div>
                      <div class="form-group">
                        <span class="text-danger"><?php echo form_error('mail'); ?></span>
                        <input name="mail" type="email" class="form-control" placeholder="Электронный адрес">
                      </div>
                      <div class="form-group">
                        <span class="text-danger"><?php echo form_error('password2'); ?></span>
                        <input name="password" type="password" class="form-control" placeholder="Пароль">
                      </div>
                      <div class="form-group">
                        <input name="password2" type="password" class="form-control" placeholder="Повторный ввод пароля">
                      </div>                    
                  </div>
                  <div class="modal-footer">
                    <button type="submit" name="submitforreg" class="rex-bottom-medium rex-btn-icon">
                        <span class="rex-btn-text">регистрация</span>
                        <span class="rex-btn-text-icon"><i class="fa fa-arrow-circle-o-right"></i></span>
                    </button>  
                  </div>
                  </form>
                </div>

这是我的控制器:

<?php
class User extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->helper(array('form','url', 'security'));
        $this->load->library(array('session', 'form_validation', 'email'));
        $this->load->database();
        $this->load->model('User_model');
    }

    function index()
    {
        $this->register();
    }



    function register()
    {
        //set validation rules
        $this->form_validation->set_rules('username', 'Username', 'trim|required|alpha_dash|min_length[3]|max_length[30]|is_unique[instructors.instructors_slug]xss_clean');
        $this->form_validation->set_rules('mail', 'Email', 'trim|required|valid_email|is_unique[instructors.mail]');
        $this->form_validation->set_rules('password', 'password', 'trim|required|md5|min_length[3]');
        $this->form_validation->set_rules('password2', 'Confirm Password', 'trim|required|md5|matches[password]');


        $to_email= $this->input->post('mail');

        $data['courses'] = $this->popular_courses_model->get_popular_courses();
        $data['news'] = $this->news_model->get_news();


        //validate form input
        if ($this->form_validation->run() == FALSE)
        {
            // fails
            $this->load->view('templates/header');
            $this->load->view('pages/index', $data);
            $this->load->view('templates/footer');
        }
        else
        {
            //insert the user registration details into database
            $data = array(
                'instructors_slug' => $this->input->post('username'),
                'mail' => $to_email,
                'password' => $this->input->post('password')
            );

            // insert form data into database
            if ($this->user_model->insertUser($data)) {



                if ($this->user_model->sendEmail($to_email)) {
                    // successfully sent mail
                    $this->session->set_flashdata('msg','<div class="alert alert-success text-center">You are Successfully Registered! Please confirm the mail sent to your Email-ID!!!</div>');
                    redirect('user/register');
                }
                else
                {
                    // error
                    $this->session->set_flashdata('msg','<div class="alert alert-danger text-center">'.$to_email.'  gondermir '.$this->email->print_debugger().'</div>');
                    redirect('user/register');
                }
            }
            else
            {
                // error
                $this->session->set_flashdata('msg','<div class="alert alert-danger text-center">daxil elemir</div>');
                    redirect('user/register');
            }
        }
    }

    public function login(){
            $data['title'] = 'Sign In';
            $this->form_validation->set_rules('username', 'Username', 'trim|required|alpha_dash|min_length[3]|max_length[30]');
        $this->form_validation->set_rules('password', 'password', 'trim|required|md5|min_length[3]');

            if($this->form_validation->run() === FALSE){
                $this->load->view('login/login', $data);
            } else {

                // Get username
                $username = $this->input->post('username');
                // Get and encrypt the password
                $password = $this->input->post('password');
                // Login user
                $user_id = $this->user_model->login($username, $password);
                if($user_id){
                    // Create session

                    $user_data = array(
                        'instructor_id' => $instructor_id,
                        'id' => $id,
                        'instructors_slug' => $username,
                        'name' => $name,
                        'logged_in' => true
                        );

                    $this->session->set_userdata($user_data);

                    redirect('');
                } else {
                    $this->session->set_flashdata('login_failed', 'Неверныый логин или пароль');
                    redirect('');
                }       
            }
        }

        public function logout() {
            $this->session->unset_userdata('logged_in');
            $this->session->unset_userdata('instructor_id');
            $this->session->unset_userdata('id');
            $this->session->unset_userdata('instructors_slug');
            $this->session->unset_userdata('name');

            redirect('');
        }


    function verify($hash=NULL)
    {
        if ($this->user_model->verifyEmailID($hash))
        {
            $this->session->set_flashdata('verify_msg','<div class="alert alert-success text-center">Your Email Address is successfully verified! Please login to access your account!</div>');
            redirect('');
        }
        else
        {
            $this->session->set_flashdata('verify_msg','<div class="alert alert-danger text-center">Sorry! There is error verifying your Email Address!</div>');
            redirect('');
        }
    }



}
?>

这是我的register.js文件:

$(document).ready(function() {
    $("#registrationform").unbind('submit').bind('submit', function() {
        var form = $(this);

        $.ajax({
            url: form.attr('action'),
            type: form.attr('method'),
            data: form.serialize(),
            dataType: 'json',
            success:function(response) {                
                if(response.success == true) {
                    $("#messages").html('<div class="alert alert-success alert-dismissible" role="alert">'+
                      '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+
                      response.messages+
                    '</div>');

                    $("#registerForm")[0].reset();
                    $(".text-danger").remove();
                    $(".form-group").removeClass('has-error').removeClass('has-success');

                }
                else {
                    $.each(response.messages, function(index, value) {
                        var element = $("#"+index);

                        $(element)
                        .closest('.form-group')
                        .removeClass('has-error')
                        .removeClass('has-success')
                        .addClass(value.length > 0 ? 'has-error' : 'has-success')
                        .find('.text-danger').remove();

                        $(element).after(value);

                    });
                }
            } // /success
        });  // /ajax

        return false;
    }); 
});

1 个答案:

答案 0 :(得分:1)

您的问题是docker-entrypoint-initdb.d问题。

也许你在包含JQuery Javascript之前调用ready函数?

这是你的错误。

  

未捕获的ReferenceError:$未在register.js中定义:

dynamic binding

请您首先将引用放到jquery脚本中。 像这样。

// Remove This.
//$(document).ready(function() {  
//$("#registrationform").unbind('submit').bind('submit', function() {
//   var form = $(this);

// Add This.
$('#your_model_id').on('click', '.submit_button_class', function(e) {

var str = $( "#registrationform" ).serialize();