jQuery 存在 url 验证在 Codeigniter 中不起作用

jQuery exist url validation is not working in Codeigniter

我在我的 CodeIgniter 系统中使用了 jQuery 验证现有配置文件-url。早期它工作正常。但是现在它不起作用我找不到错误。请检查以下代码并帮助我修复它。

HTML代码

<div class="form-group padbtm20">
    <h5 class="control-label">Profile URL (Optional)</h5>
    <div class="col-lg-12 prflinkdiv">
        <div class="col-lg-6 col-md-6 col-sm-6 col-xs-12 leftmargnprofilelink">
        <input type="text" class="form-control" name="profileurl" minlength="4" maxlength="20" data-msg-required="Please enter your public username">
        </div>
    </div>
</div>

JQuery代码

$('form').validate({
rules: {
    password: {
        required: true
        , minlength: 6
        , maxlength: 20
    },
    cfmPassword: {
        equalTo: "#password"
        , required: true
        , minlength: 6
        , maxlength: 20
    },
    profileurl: { 
        remote: {
            url: "http://localhost:8888/codeigniter/edit/username_exists",
            type: "post",
            data:
                {
                    login: function()
                    {
                        return $('input[name="profileurl"]').val();
                    }
                }
             }           
    } 
}, 
messages:{
    profileurl:{ 
        remote: jQuery.validator.format("{0} is already taken. Please try another one")
    }
}
});

控制器->Edit.php

public function __construct()
{
    parent::__construct();
    // error_reporting(E_ERROR | E_WARNING | E_PARSE);
    $this->load->model('m_edit'); // load model 
}

function username_exists()
{
   $username = $this->input->post('profileurl');
   $query = $this->m_edit->username_exist($username);
   $status ="true";

   if($query){
       $status = "false";
   }
}

型号->M_edit.php

function username_exist($username)
{ 
    $this->db->select('prof_link'); 
    $this->db->from('register');
    $this->db->where('prof_link',$username); 

    $query = $this->db->get();
    $result = $query->result_array();
    return $result;
}

不需要数据对象,因为默认情况下会发送profileurl字段的值...

profileurl: { 
    remote: {
        url: "http://localhost:8888/codeigniter/edit/username_exists",
        type: "post"
    }                
}

必须echo来自服务器的JSON编码字符串,"true"通过验证,"false"失败验证,或任何其他字符串将在字符串成为错误消息的情况下验证失败。

function username_exists()
{
    $username = $this->input->post('profileurl');
    $query = $this->m_edit->username_exist($username);
    $status = "true";

    if ($query)
    {
        // $status = "false"; // default error message
        $status = $username . " is already taken. Please try another one.";
    }

    echo json_encode($status); // <- tells validation to pass/fail
}

最后,如果您正在使用 CodeIgniter 内置的 CSRF 安全性,那么您必须发送 CSRF 令牌的值与字段的值。

profileurl: { 
    remote: {
        url: "http://localhost:8888/codeigniter/edit/username_exists",
        type: "post",
        data: {  // MUST send the CSRF Token Value
            'csrftoken': function() {
                return $('input[name="csrftoken"]').val();
            }
        }
    }                
}

'csrftoken' 必须匹配您隐藏的 CSRF 令牌字段的 name