Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用PHP CodeIgniter和JQuery在点击提交按钮之前检查用户名是否存在_Javascript_Php_Jquery_Ajax_Codeigniter - Fatal编程技术网

Javascript 使用PHP CodeIgniter和JQuery在点击提交按钮之前检查用户名是否存在

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);

我试图在使用CodeIgniter点击提交按钮之前检查用户名是否存在。以下是我的观点中的Javascript。


模型中有一个函数:

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..
});