2017-05-06 88 views
0

我试图检查用户电子邮件是否存在或不在CodeIgniter中。与CodeIgniter的AJAX请求不断给予禁止的错误

这里是笨的控制器我使用的:

public function check_email() { 

    $email= $this->input->post('email'); 

    echo "error"; 
    if($email) 
    {  
     $this->load->model('auth/register_model'); 
     $return_array = $this->register_model->check_member($this->input->post('email')); 
     if($return_array == true) 
     { 
      $json['success'] = 'false' ; 
      $json['exit'] = 'true'; 
      die(json_encode($json,JSON_PRETTY_PRINT)); 
     }  
     else 
     { 
      $json['success'] = 'true' ; 
      $json['exit'] = 'false'; 
      die(json_encode($json,JSON_PRETTY_PRINT)); 
     } 

    } 

} 

这里是我现在用的是笨的模型:

public function check_member($email) { 

    $this->db->select('user_id')->from(DB_PREFIX .'publisher')->where('email', $email); 
    $q = $this->db->get(); 
    if ($q->num_rows() == 1) { 
     return true; 
    } 

    return false; 

} 

下面是笨的AJAX我现在用:

function checkAvailability() { 
    if($("#email").val()) { 
     $(".showLiveEmail").addClass("fa fa-refresh fa-spin"); 
     $(".showEmail").removeClass("has-success"); 
     jQuery.ajax({ 
      url: "auth/register/check_email", 
      data:'email='+$("#email").val(), 
      type: "POST", 
      success:function(data){ 
       if(data.success=="true") 
       { 
        $(".showLiveEmail").removeClass("fa fa-refresh fa-spin"); 
        $(".showEmail").removeClass("has-error") 
        $(".showLiveEmail").removeClass("fa fa-times"); 
        $(".showLiveEmail").addClass("fa fa-check"); 
        $(".showEmail").addClass("has-success"); 
       } 
       else 
       { 
       } 
      }, 
      error:function(){} 
     }); 
    } 
    else 
    { 
     $(".showLiveEmail").addClass("fa fa-times"); 
     $(".showEmail").removeClass("has-success") 
     $(".showEmail").addClass("has-error") 
    } 
} 

任何人都可以帮我吗?我刚开始CodeIgniter,现在我正面临着这个问题。

+0

如果你通过AJAX做后,你需要通过一个CSRF令牌或者说改变它获得方法,如果你不想 – Roljhon

+0

嘿,你能告诉我如何通过csrf? – Rohan

+0

这里http://stackoverflow.com/questions/7348383/codeigniter-ajax-csrf-problem – Roljhon

回答

0

错误发生在您的ajax请求调用中。下面我附上正确的代码。阿贾克斯URL和传递数据,这些都是你需要关心现在的两件事情,别的都不错:

function checkAvailability() { 
if($("#email").val()) { 
    $(".showLiveEmail").addClass("fa fa-refresh fa-spin"); 
    $(".showEmail").removeClass("has-success"); 
    var getEmail = $("#email").val(); 
    jQuery.ajax({ 
     url: "<?php echo base_url('auth/register/check_email'); ?>", 
     data:{'email':getEmail}, 
     type: "POST", 
     success:function(data){ 
      if(data.success=="true") 
      { 
       $(".showLiveEmail").removeClass("fa fa-refresh fa-spin"); 
       $(".showEmail").removeClass("has-error"); 
       $(".showLiveEmail").removeClass("fa fa-times"); 
       $(".showLiveEmail").addClass("fa fa-check"); 
       $(".showEmail").addClass("has-success"); 
      } 
      else 
      { 
      } 
     }, 
     error:function(){} 
    }); 
} 
else 
{ 
    $(".showLiveEmail").addClass("fa fa-times"); 
    $(".showEmail").removeClass("has-success"); 
    $(".showEmail").addClass("has-error"); 
} 
} 

这应该工作。让我知道,如果你面对任何错误

0

Modfiy控制器像下面

public function check_email() { 

    $email= $this->input->post('email'); 

    //echo "error"; // this is not needed here 
    if($email) 
    {  
     $this->load->model('auth/register_model'); 
     $return_array = $this->register_model->check_member($this->input->post('email')); 
     if($return_array == true) 
     { 
      $json['success'] = 'false' ; 
      $json['exit'] = 'true'; 
     }  
     else 
     { 
      $json['success'] = 'true' ; 
      $json['exit'] = 'false'; 
     } 
     echo json_encode($json); 
    } 
    else{ 
     echo "error"; 
     } 

} 
0

一个我thinnk你在你的Ajax调用失踪dataType:'json'
试试这个

var email = $("#email").val(); 
    $.ajax({ 
     url: "<?php echo base_url(); ?>auth/register/check_email", 
     data:'email='+email, 
     type: 'POST', 
     dataType : 'json', 
     success:function(data) 
     { 
      if(data.success=="true") 
      { 
       $(".showLiveEmail").removeClass("fa fa-refresh fa-spin"); 
       $(".showEmail").removeClass("has-error") 
       $(".showLiveEmail").removeClass("fa fa-times"); 
       $(".showLiveEmail").addClass("fa fa-check"); 
       $(".showEmail").addClass("has-success"); 
      } 
      else 
      { 
      } 
     } 
    }); 

希望它会工作:)