我遵循了有关 ajax 查找的教程,该教程会通知用户用户名是否已被使用。根据示例,我还在名为 login 的 localhost 文件夹中完成了本教程。我已经下载了他们所有的代码并应用了它。这可以正常工作localhost/login
如果我将代码移到我的实际 Web 应用程序中,localhost/production
并从以下位置调整 check.js 文件中的语法:
url : baseurl + 'index.php/login/getResultfromdb/' + name,
到:
url : baseurl + 'getResultfromdb/' + name,
所有其他代码与以下相同。
我的问题是,当我在输入字段中输入数据并启动 jquery / ajax 时,结果总是是否定的。红十字会按照教程 css 显示。如果我输入一个已经被使用的用户名,它会返回它可用。
现在我在我的谷歌开发者工具(F12)中寻找错误并且看不到任何错误。唯一出现的是我在上面更正的 check.js 中的 url。
我的感觉是 jquery 没有正确获取输入值,因此数据库查询的值与输入的值不同。
这可能是我的 codeigniter 配置的问题吗?自动加载之类的?我已经检查了我所知道的所有内容,它似乎是正确的,但值仍然被错误地返回。
任何建议表示赞赏。
控制器语法是:
<?php
class Login extends CI_Controller
{
function index()
{
$this->load->view('loginView');
}
function getResultfromdb($username){
$this->db->where('username',urldecode($username));
$query = $this->db->get('users')->num_rows();
if($query == 0 ) echo 'userOk';
else echo 'userNo';
}
}
观点是:
<html>
<head>
<title>Check User Name</title>
<link type="text/css" rel="stylesheet" href="<?=base_url()?>css/style.css"/>
</head>
<body>
<form method="post" action="">
<label for="username">Enter Your Name</label>
<input type="text" id="username"/>
<span class="checkUser" ></span>
<input type="hidden" class="hiddenUrl"/>
</form>
<script type="text/javascript" src="<?=base_url()?>js/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="<?=base_url()?>js/check.js"></script>
</body>
</html>
check.js 是:
$(document).ready(function(){
$('#username').blur(function(){
if( $('#username').val().length >= 3 )
{
var username = $('#username').val();
getResult(username);
}
return false;
})
function getResult(name){
var baseurl = $('.hiddenUrl').val();
$('.checkUser').addClass('preloader');
$.ajax({
url : baseurl + 'getResultfromdb/' + name,
cache : false,
success : function(response){
$('.checkUser').removeClass('preloader');
if(response == 'userOk') $('.checkUser').removeClass('userNo').addClass('userOk');
else $('.checkUser').removeClass('userOk').addClass('userNo');;
}
})
}
})
如前所述,这在我的 localhost/login 上效果很好,但在我的 localhost/production 上效果不佳?