2017-05-06 11 views
0

CodeIgniterにユーザの電子メールが存在するかどうかを確認しようとしています。ここでCodeIgniterでのAJAXリクエストの禁止エラーの受け取り

は、私が使用しているのCodeIgniterのコントローラである:

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; 

} 

をここで私が使用しています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)); 
     } 

    } 

} 

は、私が使用していますCodeIgniterのモデルであります:

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リクエストコールにあります。私は同じコードを正しいコードで付け加えています。 AjaxのURLと渡すデータこれらのあなたが他の、今のところ気にする必要がある2つのものが良いですされています

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私はあなたのAJAX呼び出しにdataType:'json'を逃しているthinnk

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

以下のようなコントローラに直面した場合、私に教えてください。
この

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 
      { 
      } 
     } 
    }); 

はそれが仕事を願っています:)

関連する問題