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
。
我在我的 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
。