Электронная почта уже существует с плагином валидатора Jquery в codeigniter не работает - PullRequest
0 голосов
/ 24 августа 2018

Я использую плагин валидатора jquery в Codeigniter, и я хочу проверить поле электронной почты, существует ли данное письмо уже или нет. Я сделал все необходимое в соответствии с инструкцией, приведенной в документации валидатора Jquery, но он не работает должным образом в Codeigniter. Может ли кто-нибудь помочь мне с этой проблемой?

<script>

    $(document).ready(function () {

        $("#signupFrm").validate({
            rules: {
                customer_contactNumber: {
                    required: true,
                    digits: true,
                    minlength: 10,
                    maxlength:14
                },
                customer_email: {
                    required: true,
                    email: true,
                    remote: {
                        url: "<?php echo base_url(); ?>index.php/account/register_email_exists",
                        type: "post",
                    }
                },
            },
            messages: {
                customer_contactNumber:{
                    required: "Please enter your Contact Number",
                    minlength: "Contact number should not be lesser than 10 digits",
                    maxlength: "Contact number should not be higher than 14 digits",
                    digits: "Please enter numbers Only"
                },
                customer_email:{
                    required: "Please enter your email",
                    email: "Please enter a valid email",
                    remote: "Email already exist"
                },
            }
        });

    });

</script>

Форма регистрации

<div class="form-group has-feedback">
    <input type="email" class="form-control" placeholder="Email" id="customer_email" name="customer_email">
    <span class="glyphicon glyphicon-envelope form-control-feedback"></span>
</div>

Контроллер

function register_email_exists()
{
    if (array_key_exists('customer_email',$_POST))
    {
        $email=$_POST["customer_email"];

        $this->load->model("Email_auth");

        $this->Email_auth->verifyEmailExist($email);

        if ($this->Email_auth->verifyEmailExist($email) == TRUE)
        {
            echo json_encode("FALSE");
        }
        else
        {
            echo json_encode("TRUE");
        }
    }
}

Email_auth.php

<?php

class Email_auth extends CI_Model {

    function verifyEmailExist($email) 
    {
        $this->db->select('customer_id');

        $this->db->where(array("customer_email" => $email));

        $query=$this->db->get('tbl_customer');

        if ($query->num_rows() > 0)
        {
            return TRUE;
        }
        else
        {
            return FALSE;
        }
    }
}

1 Ответ

0 голосов
/ 24 августа 2018

Этот ответ предполагает, что ваша удаленная PHP-функция CodeIgniter правильно запрашивает вашу базу данных.

  1. Вам не вообще нужен параметр data, если только вы не хотите отправлять информацию в дополнение к полю. По умолчанию значение поля уже отправлено.

    УДАЛИТЕ все это:

    data:{
        customer_email: function() { 
            return $("#customer_email").val();
        }
    }
    
  2. Ваш логический элемент должен быть в кавычках. В случае "true" и "false" он работает с json_encode() и без него. Однако, если вы хотите отправить строку сообщения вместо "false", json_encode() является обязательным.

    echo json_encode("true");

    ИЛИ echo "true";

  3. Наконец, если у вас включена защита CSRF в CodeIgniter, вы ДОЛЖНЫ отправить значение скрытого токена в параметре data. Опять же, вы НЕ будете отправлять значение поля customer_email, так как оно отправляется уже по умолчанию. (Замените ниже csrftoken фактическим name вашего токена.)

    data: {
        csrftoken: function() {
            return $('input[name="csrftoken"]').val();
        }
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...