ユーザー名が既に使用されているかどうかをユーザーに通知する 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');;
}
})
}
})
前述のように、これは私のローカルホスト/ログインではうまく機能しますが、私のローカルホスト/プロダクションでは機能しませんか?