我在ajax查找上跟踪了tutorial,通知用户是否已经使用了用户名。我还在一个名为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上却不行吗?
答案 0 :(得分:1)
路径不正确。请尝试此
url : baseurl + 'index.php/getResultfromdb/' + name,
答案 1 :(得分:1)
它是生产服务器中的.htaccess。你需要放置你本地主机中的那个。
还尝试直接从浏览器浏览网址,看看是否可以访问它。
同时检查您是否启用了csrf
RewriteEngine on RewriteCond $ 1!^(index.php | images | robots.txt) RewriteRule ^(。*)$ / index.php/$1 [L]