Codeigniter ajax数据库查找在测试站点上工作但不在生产上

时间:2013-03-02 14:23:32

标签: jquery ajax codeigniter

我在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上却不行吗?

2 个答案:

答案 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]