2017-08-13 35 views
0

一个网页有一个用户注册表单,其中包含四个字段用户名,密码,确认密码&电子邮件。 用户名和电子邮件字段使用AJAX实现,为新用户选择唯一的用户名&电子邮件,现在的问题是当网页第一次加载浏览器时,用户名为&的AJAX电子邮件无效,一旦您提交表单整个系统将开始好好工作。我无法找到问题,也没有任何想法来解决这个问题。AJAX第一次在codeigniter中加载页面

中有三个文件

  1. register.php VIEW
  2. check_existing.php 控制器
  3. reg_model.php 型号

register.php

<script> 
    $(document).ready(function(){ 
    $(".usernametxt").on('keyup keypress blur change', function(){ 
     $.ajax({ 
     type: "POST", 
     url: "<?php echo base_url().'existing_username'; ?>", 
     data:'user_name='+$(this).val(), 
     success: function(data){ 
      $("#ex_username").html(data); 
     } 
     }); 
    }); 
    }); 
</script> 

<script> 
    $(document).ready(function(){ 
    $(".regemail").on('keyup keypress blur change', function(){ 
     $.ajax({ 
     type: "POST", 
     url: "<?php echo base_url().'existing_email'; ?>", 
     data:'reg_email='+$(this).val(), 
     success: function(data){ 
      $("#reg_email_err").html(data); 
     } 
     }); 
    }); 
    }); 
</script> 

<div class="form-header"> 
    <h1>Register Account</h1> 
</div> 
<div class="form-content"> 
    <form method="post" action="<?php echo base_url().'Welcome/register'; ?>"> 
    <div class="form-group"> 
     <label for="username">Username <div style="letter-spacing: 0px;text-transform:lowercase; color:rgba(255, 234, 0, 0.86); display:inline-block;" id="ex_username"></div></label> 
     <input type="text" class="usernametxt" id="username" name="username" required="required" autocomplete="off" title="Enter your username"/> 
    </div> 
    <div class="form-group"> 
     <label for="password">Password <div style="letter-spacing: 0px;text-transform:lowercase; color:rgba(255, 234, 0, 0.86); display:inline-block;" id="passerr"></div></label> 
     <input type="password" id="passwordtxt" name="password" required="required" title="Enter your password"/> 
    </div> 
    <div class="form-group"> 
     <label for="cpassword">Confirm Password <div style="letter-spacing: 0px;text-transform:lowercase; color:rgba(255, 234, 0, 0.86); display:inline-block;" id="cpasserr"></div></label> 
     <input type="password" id="cpasswordtxt" name="cpassword" required="required" title="Confirm password"/> 
    </div> 
    <div class="form-group"> 
     <label for="email">Email Address <div style="letter-spacing: 0px;text-transform:lowercase; color:rgba(255, 234, 0, 0.86); display:inline-block;" id="reg_email_err"></div></label> 
     <input type="email" id="email" class="regemail" name="email" required="required" autocomplete="off" title="Enter your email"/> 
    </div> 
    <div class="form-group"> 
     <button type="submit">Register</button> 
     <? if($this->session->flashdata('showreg')){ 
     $path=base_url()."assets/images/sign-warning-icon.png"; 
     ?> 
     <div style="letter-spacing: 0px;margin-top:10px;text-transform:lowercase; color:rgba(255, 234, 0, 0.86); display:inline-block;"> 
      <img height='17px' style='margin-bottom:-3px;' width='17px' src='<?=$path; ?>'> 
      <?= $this->session->flashdata('showreg') ?> 
     </div> 
     <? } ?> 
    </div> 
    </form> 
</div> 

check_existing.php

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Existing_username extends CI_Controller { 

public function index() 
{ 
    $user_name = $_POST['user_name']; 
    $regex='/^[a-z0-9_-]{4,15}$/'; 
    $regex2='/^[a-z0-9_-]{1,15}$/'; 

    if(strlen($user_name)==0) 
    { 
     echo ""; 
    } 
    else if(strlen($user_name)>15) 
    { 
     $path=base_url()."assets/images/sign-warning-icon.png"; 
     echo "<img height='17px' style='margin-bottom:-3px;' width='17px' src='$path'> User Name Too Long."; 
    } 
    else if(strlen($user_name)<4) 
    { 
     if(!preg_match($regex2, $user_name) && strlen($user_name)<4) 
     { 
      $path=base_url()."assets/images/sign-warning-icon.png"; 
      echo "<img height='17px' style='margin-bottom:-3px;' width='17px' src='$path'> Only _ (Underscore) allowed."; 
     } 
     else 
     { 
      $path=base_url()."assets/images/sign-warning-icon.png"; 
      echo "<img height='17px' style='margin-bottom:-3px;' width='17px' src='$path'> User Name Too Short."; 
     } 
    } 
    else if(!preg_match($regex2, $user_name) && strlen($user_name)>=4) 
    { 
     $path=base_url()."assets/images/sign-warning-icon.png"; 
     echo "<img height='17px' style='margin-bottom:-3px;' width='17px' src='$path'> Only _ (Underscore) allowed."; 
    } 
    else if(preg_match($regex, $user_name)) 
    { 
     $this->load->model('Existing_model'); 
     if($this->Existing_model->exists_username($user_name)) 
     { 
      $path=base_url()."assets/images/sign-warning-icon.png"; 
      echo "<img height='17px' style='margin-bottom:-3px;' width='17px' src='$path'> Username Is Not Available"; 
     } 
     else 
     { 
      $path=base_url()."assets/images/sign-check-icon.png"; 
      echo "<img height='17px' style='margin-bottom:-3px;' width='17px' src='$path'>"; 
     } 
    } 
    else 
    { 
     $path=base_url()."assets/images/sign-check-icon.png"; 
     echo "<img height='17px' style='margin-bottom:-3px;' width='17px' src='$path'> Invalid username."; 
    } 
} 
} 

reg_model.php

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Existing_model extends CI_Model 
{ 
public function exists_username($un) 
{ 
    $this->load->database(); 
    $this->db->where('user_name', $un); 

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

    if($query->num_rows >= 1) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

public function exists_email($em) 
{ 
    $this->load->database(); 
    $this->db->where('email', $em); 

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

    if($query->num_rows >= 1) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 
} 
?> 

这个INDEX.JS文件还包括

$(document).ready(function() { 
 
    var panelOne = $('.form-panel.two').height(), 
 
    panelTwo = $('.form-panel.two')[0].scrollHeight; 
 

 
    $('.form-panel.two').not('.form-panel.two.active').on('click', function(e) { 
 
    
 

 
    $('.form-toggle').addClass('visible'); 
 
    $('.form-panel.one').addClass('hidden'); 
 
    $('.form-panel.two').addClass('active'); 
 
    $('.form').animate({ 
 
     'height': panelTwo 
 
    }, 200); 
 
    }); 
 
    $('.register_link').not('.form-panel.two.active').on('click', function(e) { 
 
    
 

 
    $('.form-toggle').addClass('visible'); 
 
    $('.form-panel.one').addClass('hidden'); 
 
    $('.form-panel.two').addClass('active'); 
 
    $('.form').animate({ 
 
     'height': panelTwo 
 
    }, 200); 
 
    }); 
 

 
    $('.form-toggle').on('click', function(e) { 
 
    
 
    $(this).removeClass('visible'); 
 
    $('.form-panel.one').removeClass('hidden'); 
 
    $('.form-panel.two').removeClass('active'); 
 
    $('.form').animate({ 
 
     'height': panelOne 
 
    }, 200); 
 
    }); 
 

 
    $('.forg-pass-link').on('click', function(e) { 
 
    $('.form-panel.three').show(); 
 
    $('.form-panel.one').hide(); 
 
    }); 
 

 
    $('.forg-form-toggle').on('click', function(e) { 
 
    $('.form-panel.three').hide(); 
 
    $('.form-panel.one').show(); 
 
    }); 
 
});

+0

你不应该只使用其中之一? “KEYUP按键模糊变” – Brad

+0

不WORKS :( –

+0

你检查你的网址在'$阿贾克斯()',它与PHP在这一点上正确发送这里'网址:?““'。我经常遇到这个问题,我必须做的事情,我把它放在隐藏字段中,并在ajax调用中通过ID调用它。 –

回答

0

我发现这个问题,并想知道这是为什么使用CodeIgniter发生。

我已经取代

网址:;,

WITH

URL “< PHP的回波BASE_URL() 'existing_email'>??”: “existing_email”;

它开始工作良好。但我不明白为什么会发生这种情况