簡體   English   中英

帶有CodeIgniter的AJAX請求不斷給出禁止的錯誤

[英]AJAX request with CodeIgniter keep giving forbidden error

我正在嘗試檢查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,現在面對這個問題。

錯誤發生在您的ajax請求調用中。 下面,我附上相同的正確代碼。 Ajax URL和Passing Data這是您現在需要關心的兩件事,否則很好:

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

這應該工作。 讓我知道您是否遇到任何錯誤

像下面的那樣修改控制器

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

}

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

希望它能工作:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM