Не очищает данные после отправки формы в phpigniter php - PullRequest
0 голосов
/ 17 октября 2019

У меня есть регистрационная форма, как только пользователь отправляет форму, не удаляя данные, и она также не отображает сообщение об успехе. Здесь код, который я написал для регистрационной формы.

Контроллер:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Login extends CI_Controller {
public function __construct() {
    parent::__construct();
    $this->lang->load('error_messages', 'english');
    $this->load->model(VERSION . DOCTOR_MODEL_FOLDER . 'Doctor_model', 'doctors');
    $this->load->helper('gmaps');
    $this->load->library('locations');
}
 public function createAccount() {
    $first_name = $this->input->post('first_name');
    $last_name = $this->input->post('last_name');        
    $email = $this->input->post('email_id');
    $password = $this->input->post('password');
    $phone_number = $this->input->post('phone_number_with_ext');        
    $reg_no = $this->input->post('reg_no');    
    $regDetails = array(
        'first_name' => $first_name,
        'last_name' => $last_name,
        'email_id' => $email,
        'password' => $password,
        'reg_no' => $reg_no,
        'mobile_no' => $phone_number,            
    );
    $regMessage = $this->doctors->register($regDetails);
    //if registration done successfully
    if (is_string($regMessage)) {
        $data['success'] = true;
        $data['response'] = $phone_number;

    } else {
        //if there is error
        $data['success'] = false;
        $data['error_msg'] = $regMessage;
    }
    die(json_encode($data));
}

Просмотр:

<div class="form">
                        <div class="alert" style="display: none;"></div>
                        <form class="form-validate form-horizontal " id="register_form" method="post" action="" enctype="multipart/form-data">                             
                            <div class="form-group ">
                                <div>
                                    <input class=" form-control" placeholder="First Name" id="first_name" name="first_name" type="text" />

                                </div>
                            </div>
                            <div class="form-group ">
                                <div>
                                    <input class=" form-control" placeholder="Last Name" id="last_name" name="last_name" type="text" />
                                </div>
                            </div>
                            <div class="form-group ">
                                <div>
                                    <input class=" form-control" placeholder="Email Address" id="email_id" name="email_id" type="text" />
                                </div>
                            </div>
                            <div class="form-group ">
                                <div>
                                    <input class="form-control country-code" placeholder="Phone Number" id="phone_number" name="phone_number" type="tel" />
                                </div>
                            </div>
                            <div class="form-group ">
                                <div>
                                    <input type="text" class="form-control " placeholder="Registration number" id="reg_no" name="reg_no">
                                </div>
                            </div>                          
                            <div class="form-group ">
                                <div>
                                    <input class="form-control " placeholder="Password" id="password" name="password" type="password" />
                                </div>
                            </div>
                            <div class="form-group ">
                                <div>
                                    <input class="form-control " placeholder="Re-enter Password" id="confirm_password" name="confirm_password" type="password" />
                                </div>
                            </div>

                            <div class="form-group">
                                <div>
                                    <button type="submit" id="btnRegister" class="btn btn-primary btn-lg btn-block">Submit</button>
                                </div>
                            </div>
                        </form>                          
                    </div>

JS:

 // Submit registration form on button click last_name:{ required: true},
 $('form#register_form').validate({
  rules: {
    first_name: {
        required: true,
        alpha: true
    },       
    email_id: {
        required: true,
        email: true
    },
    phone_number: {
        required: true,
        number: true,
        minlength: 8,
        maxlength: 10
    },

    password: {
        required: true,
        minlength: 6
    },
    confirm_password: {
        required: true,
        minlength: 6,
        equalTo: "#password"
    },             
},
messages: {
    first_name: {
        required: "Please enter First Name.",
        alpha: "Special Characters not allowed."
    },        
    email_id: {
        required: "Please enter a email address.",
        email: "Please enter a valid email address."
    },
    phone_number: {
        required: "Please enter Phone Number." ,
        number: "Please enter Numeric values for Phone Number."
    },               
    password: {
        required: "Please provide a password.",
        minlength: "Your password must be at least 6 characters long."
    },
    confirm_password: {
        required: "Please provide a password.",
        minlength: "Your password must be at least 6 characters long.",
        equalTo: "Please enter the same password as above."
    },              
},
submitHandler: function(form) {
    var post_data = $("#register_form").serializeArray();

    //var phoneExten = $("ul.country-list li.active").attr('data-dial-code');
    var phoneExt = $("#phone_number").intlTelInput("getNumber");        
    post_data.push({name: "phone_number_with_ext", value: phoneExt});        
    //console.log(post_data);

    $.ajax({
        url: "/createAccount",
        type: "POST",
        data: post_data
    }).done(function(res) {
        //console.log(res);            
        var data = $.parseJSON(res);            
        if( data.success){
        $('form#register_form div.form div.alert').removeClass('alert-danger').addClass('alert-success').text('User Created Successfully.').show().delay(2000).fadeOut('slow');
        }else{
            $('div.form div.alert').addClass('alert-danger').text(data.error_msg.message).show().delay(2000).fadeOut('slow');
            $("div.form").scrollTop();
        }
    });
     }
    });

Добавлено сообщение об успешном выполнении в javascript, оно работает нормально для сообщения об ошибке, но не работает для сообщения об успехе и однократных данныхотправляет данные, которые по-прежнему отображаются в полях формы. Не удаляются данные.

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

После завершения кода используйте эту строку для обновления страницы:

redirect('Login/createAccount','refresh');

Для сообщения об успехе: в коде контроллера:

$this->session->set_flashdata('Add', 'Your da`ta added Successfully..');
 redirect('Login/createAccount','refresh');

В просмотре страницы после тела:

<?php if($this->session->flashdata('Add')){ ?>
    <center><div id="successMessage" class="alert bg-success alert-styled-left">
    <button type="button" class="close" data-dismiss="alert"><span>&times;</span><span class="sr-only">Close</span></button>
    <span class="text-semibold"><?php echo  $this->session->flashdata('Add'); ?></span> 
</div></center>
<?php }  ?>

Javascript код для отключения флэш-данных через определенное время:

    <script type="text/javascript">
$(document).ready(function(){
    $("#successMessage").delay(5000).slideUp(300);
});
</script>
0 голосов
/ 17 октября 2019

Следующая строка работает следующим образом: сначала она находит из # register_form внутри элементов, а затем находит div.form (которого нет внутри формы # register_form), затем jquery пытается найти div.alert с помощью div.form, который не найденв вашей текущей структуре HTML.

div.form является родительским узлом формы # register_form.

$('form#register_form div.form div.alert').removeClass('alert-danger').addClass('alert-success').text('User Created Successfully.').show().delay(2000).fadeOut('slow');

Вы должны изменить его на:

$('div.alert').removeClass('alert-danger').addClass('alert-success').text('User Created Successfully.').show().delay(2000).fadeOut('slow');

НасколькоВы отправляете форму через AJAX, вам нужно очистить все поля формы с помощью jquery. Вы можете сделать это как.

$('form#register_form').trigger("reset");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...