Javascript 使用PHP CodeIgniter和JQuery在点击提交按钮之前检查用户名是否存在
我试图在使用CodeIgniter点击提交按钮之前检查用户名是否存在。以下是我的观点中的Javascript。Javascript 使用PHP CodeIgniter和JQuery在点击提交按钮之前检查用户名是否存在,javascript,php,jquery,ajax,codeigniter,Javascript,Php,Jquery,Ajax,Codeigniter,我试图在使用CodeIgniter点击提交按钮之前检查用户名是否存在。以下是我的观点中的Javascript。 模型中有一个函数: function check_username_availability($username){ $query = $this->db->query("SELECT username FROM users WHERE username = '".$username."'"); $this->db->limit(1);
模型中有一个函数:
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;
}
无论何时尝试,结果总是有效的,即使数据库中已经存在这样的用户名。我认为我的问题在于javascript的
类型:“POST”
。它如何将获取的行数(在模型中获取的行数)输入javascript?我只是轻拍我的代码。请帮我完成这项工作。我在使用CodeIgniter框架方面是新手。谢谢大家!
编辑
$(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();
}
}
}
});
}
}
$(文档).ready(函数(){
$(“#用户名”).keyup(用户名检查);
});
函数username_check(){
var username=$('#username').val();
如果(username==“”| | username.length<4){
$('#username').css('border','3px#CCC solid');
$(“#勾选”).hide();
}否则{
var url='addpatient/insert';
变量数据={username:'username'};
$.post(url、数据、函数(结果){
控制台日志(结果);
功能(响应){
如果(响应==1){
$('#username').css('border','3px#C33 solid');
$(“#勾选”).hide();
$('交叉').fadeIn();
}否则{
$('#username').css('border','3px#090 solid');
$(“#交叉”).hide();
$('勾选').fadeIn();
}
}
}
});
}
}
假设您的php代码返回正确的值。。。
在成功回调或返回json中修剪结果
if($.trim(response) == 1)
试试这个
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
}
我认为你的ajax调用就是问题所在。您正在发布的数据应该是一个对象。试着在jquery中这样做。更容易:
var url = 'addpatient/insert';
var data = {username:'username'};
$.post(url, data, function(result){
console.log(result);
..your success function..
});
是返回数值中缺少的$
您的功能检查的code>用户名可用性($username){}
输入错误?-><代码>返回$num代码>?是的,只是打字错误。即使使用$
,结果也始终有效。请在此处使用$this->db->escape($username)。CI内置了清理inputsuccess的方法:这里的函数(响应)只有在您在控制器上回显某些内容时,响应才有价值。您是否在那里回显了任何内容?在此部分中success:function(response){}
请添加console.log(response)
像这样success:function(response){console.log(response);}
并检查控制台窗口以查看结果是否符合您的需要。他/她的AJAX正在调用insert()
函数,因此他的insert()
函数也应该是一个回声$result
,您在控制器中的何处调用模型以及如何调用模型?你能发布代码吗?我在控制器的第一部分通过$this->load->model('user','',TRUE)调用了模型代码>(用户是模型)。控制器中的其他代码行只是“发布”表单中的值,并将这些值添加到数据库中。这是打字错误吗$响应=$this->user->check_username($patient['username');它应该是你的函数名:check_username_availabil我很抱歉。先生,我不明白你的答案。请查看我的试用版编辑。哦,对不起。我会问得更好。在控制器中,调用模型以获得$response。您通过函数名“check_username”调用模型,但在模型代码中我看到了以下函数:“function check_username_availability()”。您似乎试图调用此函数,但拼写不正确。在你的控制器中,你似乎缺少了“可用性”这个词。如果两个用户名的名称不一致,你该怎么办?最好安全使用!=0
。
if($.trim(response) == 1)
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
}
var url = 'addpatient/insert';
var data = {username:'username'};
$.post(url, data, function(result){
console.log(result);
..your success function..
});