0

我遵循了有关 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 上效果不佳?

4

2 回答 2

1

路径不正确。试试这个

url : baseurl + 'index.php/getResultfromdb/' + name,
于 2013-03-02T14:29:28.540 回答
1

它是您生产服务器中的 .htaccess。你需要把那个放在你的本地主机中。

也尝试直接从浏览器浏览 url,看看是否可以访问它。

还要检查你是否启用了 csrf

RewriteCond 上的 RewriteEngine $1 !^(index.php|images|robots.txt) RewriteRule ^(.*)$ /index.php/$1 [L]

于 2013-03-03T08:37:22.570 回答