[英]Check if username exists before hitting the submit button using PHP CodeIgniter and JQuery
I am trying to check if a username exists even before hitting the submit button using CodeIgniter. 我正在尝试使用CodeIgniter甚至在单击“提交”按钮之前,检查用户名是否存在。 Here is the Javascript in my view. 我认为这是Javascript。
<script type="text/javascript" src="../assets/js/jquery.min.js"></script>
<script type="text/javascript"><!--\
$(document).ready(function(){
$('#username').keyup(username_check);
});
function username_check(){
var username = $('#username').val();
if(username == "" || username.length < 4){
$('#username').css('border', '3px #CCC solid');
$('#tick').hide();
}else{
jQuery.ajax({
type: "POST",
url: "addpatient/insert",
data: 'username='+ username,
cache: false,
success: function(response){
if(response == 1){
$('#username').css('border', '3px #C33 solid');
$('#tick').hide();
$('#cross').fadeIn();
}else{
$('#username').css('border', '3px #090 solid');
$('#cross').hide();
$('#tick').fadeIn();
}
}
});
}
}
</script>
Here is a part of the form: 这是表格的一部分:
<form method="post" action="addpatient/insert">
<table id='addpatient'>
<tr>
<td width=100> Username:
<td width=150> <input type='text' id='username' name='username'>
</tr> .....
Here is a part of the the controller (function insert
) 这是控制器的一部分(功能insert
)
$patient['username'] = strtolower($this->input->post('username'));
$response = $this->user->check_username($patient['username']);
Here is a function in the model: 这是模型中的一个函数:
function check_username_availability($username){
$query = $this->db->query("SELECT username FROM users WHERE username = '".$username."'");
$this->db->limit(1);
$num = $query->num_rows();
return $num;
}
The result is always valid whenever I try it even though such username already exists in the database. 即使数据库中已经存在这样的用户名,只要我尝试,结果始终是有效的。 I think my problem is in the type: "POST"
of the javascript. 我认为我的问题出在JavaScript type: "POST"
。 And how could it get the number of rows fetched (fetched in the model
) to the javascript? 以及如何获取获取到javascript的行数(在model
获取)? I just pattered my code here . 我只是在这里敲打我的代码。 Please help me make this work. 请帮助我完成这项工作。 I'm new in using CodeIgniter framework. 我是使用CodeIgniter框架的新手。 Thank you! 谢谢!
EDIT 编辑
$(document).ready(function(){
$('#username').keyup(username_check);
});
function username_check(){
var username = $('#username').val();
if(username == "" || username.length < 4){
$('#username').css('border', '3px #CCC solid');
$('#tick').hide();
}else{
var url = 'addpatient/insert';
var data = {username:'username'};
$.post(url, data, function(result){
console.log(result);
function(response){
if(response == 1){
$('#username').css('border', '3px #C33 solid');
$('#tick').hide();
$('#cross').fadeIn();
}else{
$('#username').css('border', '3px #090 solid');
$('#cross').hide();
$('#tick').fadeIn();
}
}
}
});
}
}
假设您的php代码返回正确的值...在成功回调中修剪结果或返回json。
if($.trim(response) == 1)
Try this one 试试这个
function check_username_availability($username){
$query = $this->db->query("SELECT username FROM users WHERE username = '".$username."'");
$this->db->limit(1);
$num = $query->num_rows();
echo $num; //echo the value instead return
}
I think your ajax call is the problem. 我认为您的ajax电话是问题所在。 The data that you are posting should be an object. 您要发布的数据应该是一个对象。 Try doing it in jquery. 尝试在jquery中进行操作。 its easier: 更容易:
var url = 'addpatient/insert';
var data = {username:'username'};
$.post(url, data, function(result){
console.log(result);
..your success function..
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.