使用codeigniter和AJAX检查数据库SQL中是否存在电子邮件

时间:2017-02-01 13:02:45

标签: javascript php twitter-bootstrap codeigniter

modal screenshot

我在bootstrap模式中有一个表单,我想验证电子邮件是否已存在于数据库中。结果直接指向空白页面' {"有效":false," msg":"电子邮件已被拍摄"}&#39 ;。我希望msg看起来就像我在截图中看到的那样。

查看

    <?php echo form_open('KulinerControl/isEmailExist', 'id="myform"'); ?>
    <div id="msg"> </div>
    <input type="text" name="email" id="email" class="input-lg formcontrol"> 
    <button type="submit">Submit</button>
</form>

JS

  $(document).ready(function(){
            $('#myform').on('submit', function(e) {
            var email = $('#email').val();
            $.ajax({
                type: "POST",
                url: "<?php echo base_url()?>KulinerControl/isEmailExist",
                dataType: "json",
                data: "email="+email,                     
                success: function(data){
                    if(data.valid){
                        $('#msg').html(data.msg);
                    }else{
                        $('#msg').html(data.msg);
                    }
                }
            });
        });
    });

控制器

function isEmailExist(){
$email = $this->input->post('email');
$exists = $this->KulinerModel->isEmailExist($email);
if($exists){
        $msg = array(
        'valid' => false,
        'msg'   => 'Email is already taken');
    }else{
        $msg = array(
        'valid' => true,
        'msg'   => 'Username is available');
    }
    echo json_encode($msg);}

更新控制器

function isEmailExist(){
$email = $this->input->post('email');
$exists = $this->KulinerModel->isEmailExist($email);
if($exists){
    echo "Email is already taken !";
}else{
     $data = array(
        'nama' =>  $this->input->post('nama'),
        'email' =>  $email,
        'password' => md5($this->input->post('password'))
    );
 $query = $this->KulinerModel->addMember($data);
 redirect('/KulinerControl/');
     }
 }

提前致谢

2 个答案:

答案 0 :(得分:0)

我认为实时电子邮件检查更适合您的情况

 <script>
   $(document).ready(function(){
            $('#email').keyup(function(){
            var email = $('#email').val();
            $.ajax({
                type: "POST",
                url: "<?php echo base_url()?>KulinerControl/isEmailExist",
                data: "email="+email,                     
                success: function(response){
                        $('#msg').html(response);
                }
            });
        });
    });
</script>

在您的控制器中

function isEmailExist()
{
   $email = $this->input->post('email');
   $exists = $this->KulinerModel->isEmailExist($email);
   if($exists){
        echo "Email is already taken";
    }else{
        echo "";
    }

 }

防止提交简单的伎俩

$(document).ready(function(){
    $('#myform').on('submit', function(e) {
        if ($.trim($("#msg").val()) === "") {
           alert('please choose a different email id');
            return false;
       }
    });
});

将您的表单操作控制器更改为此

function dataInsert()
   {
       $data = array(
        'nama' =>  $this->input->post('nama'),
        'email' => $this->input->post('email'),
        'password' => md5($this->input->post('password'))
       );
       $query = $this->KulinerModel->addMember($data);
       redirect('/KulinerControl/');
  }

答案 1 :(得分:0)

您需要先停止提交表单然后再开始检查。然后如果检查找到它的确定然后提交它。我会使用以下

$(document).ready(function(){
        $('#myform').on('submit', function(e) {
        e.preventDefault();        //<---- stop submiting the forms
        var email = $('#email').val();
        $.ajax({
            type: "POST",
            url: "<?php echo base_url()?>KulinerControl/isEmailExist",
            dataType: "json",
            data: "email="+email,                     
            success: function(data){
                if(data.valid){
                    $('#msg').html(data.msg);
                    $("#myform").submit();    //<---- submit the forms
                }else{
                    $('#msg').html(data.msg);
                }
            }
        });
    });
});