Oke伙计们,我在使用AJAX来验证用户名的可用性方面遇到了一些问题,这是我在codeigniter中的代码:
查看 一个。表格
<input type="text" class="form-control" placeholder="New Username" name="userId" id="userId" value="" onblur="return check_username();">
<div id="Info"></div></span><span id="Loading"><img src="<?php echo base_url(); ?>assets/img/loading.gif" alt="" /></span>
湾脚本
<script src="<?php echo base_url(); ?>assets/plugins/jquery-1.8.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#Loading').hide();
});
function check_username(){
var username = $("#userId").val();
if(username.length > 2){
$('#Loading').show();
$.post("<?php echo base_url(); ?>admin/check_username_availablity", {
username: $('#userId').val(),
}, function(response){
$('#Info').fadeOut();
$('#Loading').hide();
setTimeout("finishAjax('Info', '"+escape(response)+"')", 450);
});
return false;
}
}
function finishAjax(id, response){
$('#'+id).html(unescape(response));
$('#'+id).fadeIn(1000);
}
</script>
模态
public function check_username_availablity(){
$username = trim($this->input->post('userId'));
$username = strtolower($username);
$query = $this->db->query("SELECT * FROM table_user WHERE userId='$username'");
if($query->num_rows() > 0)
return false;
else
return true;}
控制器
public function check_username_availablity(){
$this->load->model('m_admin');
$get_result = $this->m_admin->check_username_availablity();
if(!$get_result )
echo '<span style="color:#f00">Username already in use. </span>';
else
echo '<span style="color:#00c">Username Available</span>';
}
问题的形式始终显示用户名可用。 请帮助.. :))
答案 0 :(得分:0)
1:当我的用户名为&#34;&#39;; DELETE FROM table_user;&#39;&#34; ?您的查询将变为:
SELECT * FROM table_user WHERE userId = '';DELETE FROM table_user;''
因此,让我们解决一下:(并请:阅读翻阅手册)
$this->db->query('SELECT * FROM table_user WHERE userId = ?',array($username));
2:不要在你的模型中放置业务逻辑:
function check_username_availability($username)
{
// also the name of this function could better describe what it does:
// is_username_available($username) for instance.
// ...
}
3:选择用户的查询输出是什么?您尝试调试了什么?
die(var_dump($this->db->last_query()));
4:您确实意识到您正在针对用户 NAME 检查用户 ID 吗?
答案 1 :(得分:0)
您通过username
而不是username: $('#userId').val()
userId
请尝试使用$this->input->post('username')
$username = strtolower(trim($this->input->post('username')));
或者从jQuery更改发布的数据索引:username
到userId
userId: $('#userId').val()