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 に従って表示されます。すでに使用されているユーザー名を入力すると、それが利用可能であることが返されます。

Google開発者ツール(F12)でエラーを探しましたが、何も表示されません。表示された唯一のものは、上記のように修正した check.js の URL でした。

私の感じでは、入力値が jquery によって正しくフェッチされていないため、データベース クエリは入力された値とは異なる値を対象としています。

これは私のコードイグナイターの設定の問題でしょうか? オートロードなど?私が知っていることをすべて確認したところ、正しいように見えますが、値がまだ正しく返されていません。

アドバイスをいただければ幸いです。

コントローラーの構文は次のとおりです。

<?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');;
            }
        })
    }
})

前述のように、これは私のローカルホスト/ログインではうまく機能しますが、私のローカルホスト/プロダクションでは機能しませんか?

4

2 に答える 2

1

本番サーバーの .htaccess です。ローカルホストにあるものを配置する必要があります。

また、ブラウザから直接 URL を参照して、アクセスできるかどうかを確認してください。

csrf が有効になっているかどうかも確認してください

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

于 2013-03-03T08:37:22.570 に答える
1

パスが正しくありません。これを試してください

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