簡體   English   中英

當我調用函數時,它給了我錯誤。 為什么?

[英]When i call function it's given me error. why?

出現錯誤

用戶名功能未調用,但我正在為其提供價值

Message: call_user_func_array() expects parameter 1 to be a valid callback, class 'Error' does not have a method 'index'

我的JavaScript是:

email : { required : true, email : true, remote : { url : baseURL + "checkEmailExists", type :"post"} },
        username :{ required : true, remote : { url : baseURL + "checkUsernameExists", type :"post"} },
        password : { required : true },

我的控制器是:

function checkEmailExists()
{
    $id = $this->input->post("id");
    $email = $this->input->post("email");

    if(empty($id)){
        $result1 = $this->user_model->checkEmailExists($email);
    } else {
        $result1 = $this->user_model->checkEmailExists($email, $id);
    }

    if(empty($result1)){ echo("true"); }
    else { echo("false"); }
}

function checkUsernameExists()
{
    $id = $this->input->post("id");
    $username = $this->input->post("username");

    if(empty($id)){
        $result = $this->user_model->checkUsernameExists($username);
    } else {
        $result = $this->user_model->checkUsernameExists($username, $id);
    }

    if(empty($result)){ echo("true"); }
    else { echo("false"); }
}

我的模型是:

function checkEmailExists($email, $id = 0)
{
    $this->db->select("email");
    $this->db->from("admins");
    $this->db->where("email", $email);   
    if($id != 0){
        $this->db->where("id !=", $id);
    }
    $query = $this->db->get();

    return $query->result();
}

function checkUsernameExists($username, $id = '')
{
    $this->db->select("username");
    $this->db->from("admins");
    $this->db->where("username", $username);   
    if($id != ''){
        $this->db->where("id !=", $id);
    }
    $query1 = $this->db->get();

    echo '<pre>';
    print_r($query1);
    die();

    return $query1->result();
}

我的視圖部分是:

<div class="col-md-6">
                                <div class="form-group">
                                    <label for="email">Email address</label><span style="color: red">*</span>
                                    <input type="text" class="form-control required email" id="email"  name="email" maxlength="128">
                                </div>
                            </div>
                            <div class="col-md-6">
                                <div class="form-group">
                                    <label for="username">User Name</label><span style="color: red">*</span>
                                    <input type="text" class="form-control required" id="username"  name="username" maxlength="128">
                                </div>
                            </div>

我的電子郵件驗證被完美調用,但我的用戶名驗證未完美調用。 它顯示出call_fun .....的錯誤。這是為了檢查電子郵件或用戶名是否已經退出

在下面的代碼中,您不需要單獨的控制器功能即可檢查用戶名或電子郵件是否已存在。 您可以組合成一個控制器功能。

它也可以同時在注冊和編輯配置文件中工作。

控制器:-

public function fieldcheck()
{
    if( $this->input->is_ajax_request() && ( $this->input->post('email') || $this->input->post('username') ) )
    {
        if( $this->input->post('id') )
        {
            $id = $this->encrypt->decode($this->input->post('id'));
        }
        else
        {
            $id = 0;
        }

        if( $this->input->post('email') )
        {
            $field = 'email';
            $fieldvalue = $this->input->post('email');
        }
        if( $this->input->post('username') )
        {
            $field = 'username';
            $fieldvalue = $this->input->post('username');
        }

        if($field)
        {
            //Loading Model File
            $this->load->model('user_model');

            $result = $this->user_model->checkExists($id,$field,$fieldvalue);
            if ($result == 'new')
            {
                echo json_encode( array('result'=>'new') );
                die();
            }
            else
            {
                echo json_encode( array('result'=>'old') );
                die();
            }
        }
    }
    else
    {
        redirect('user', 'refresh');
    }
}

型號:-

//Querying to Check E-mail or Username is already exists
function checkExists($id,$field,$fieldvalue)
{
    switch($field)
    {
        case 'email'        : $dbfield = 'email';break;
        case 'username'     : $dbfield = 'username';break;
    }
    if($id != 0)
    {
        $option = array( 'id !=' => $id, $dbfield => $fieldvalue );
    }
    else
    {
        $option = array( $dbfield => $fieldvalue );
    }

    //echo "<pre>";
    //print_r($option);
    //die();

    $query = $this->db->get_where('admins', $option);
    if ($query->num_rows() > 0)
    {
        return 'old';
    }
    else
    {
        return 'new';
    }
}

查看:-

這里有1條建議。 請用於“電子郵件地址輸入”字段。

<div class="col-md-6">
   <div class="form-group">
   <label for="email">Email address</label><span style="color: red">*</span>
   <input type="email" class="form-control required email" id="email" name="email" maxlength="128" onchange="checkusername(this.value);">
   </div>
</div>
<div class="col-md-6">
   <div class="form-group">
   <label for="username">User Name</label><span style="color: red">*</span>
   <input type="text" class="form-control required" id="username" name="username" maxlength="128" onchange="checkemail(this.value);">
   </div>
</div>

Javascript:-

<script type="text/javascript">
function trim(stringToTrim) {
    return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function checkemail(email)
{
    var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    if( trim(email) != '' && filter.test(trim(email)) )
    {
        $.ajax({
            type        : "POST",
            url         :   "<?php echo site_url('user/fieldcheck');?>", //Controller Name / Function Name
            data        :   { <?php if($this->uri->segment(2) == 'edit' ) echo "'id' : ".$user[0]['id'].", "; ?> 'email' : email },
            dataType    : "json",
            cache       : false,
            success     :   function(data){
                            if( data.result == 'old')
                            {
                                alert('E-mail already Taken.');
                                return false;
                            }
                }
        });
    }
    else
    {
        alert('Please enter valid E-mail Id.');
        return false;
    }
}
function checkusername(username)
{
    if( trim(username) != '' )
    {
        $.ajax({
            type        : "POST",
            url         :   "<?php echo site_url('user/fieldcheck');?>", //Controller Name / Function Name
            data        :   { <?php if($this->uri->segment(2) == 'edit' ) echo "'id' : ".$user[0]['id'].", "; ?> 'username' : username },
            dataType    : "json",
            cache       : false,
            success     :   function(data){
                            if( data.result == 'old')
                            {
                                alert('Username already Taken.');
                                return false;
                            }
                }
        });
    }
    else
    {
        alert('Please enter Username.');
        return false;
    }
}
</script>

希望以上代碼對您有所幫助。

暫無
暫無

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

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