CodeIgniter的AJAX请求一直给出禁止的错误

时间:2017-05-06 07:08:03

标签: php jquery ajax codeigniter

我正在尝试检查CodeIgniter中是否存在用户电子邮件。

以下是我正在使用的CodeIgniter的控制器:

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模型:

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:

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,我现在正面临着这个问题。

3 个答案:

答案 0 :(得分:0)

错误发生在您的ajax请求调用中。下面我附上相同的正确代码。 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");
}
}

这应该有效。如果您遇到任何错误,请告诉我

答案 1 :(得分:0)

修改控制器,如下面的那个

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";
        } 

}

答案 2 :(得分:0)

我知道你在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
            {
            }
        }
    });

希望它能奏效:)