0

ここでは、ユーザーがユーザー名を入力できるかどうかを確認しようとしています。私はコードイグナイターでそれをやっています。ここに私のビューページがあります:

<html>
<head>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script type="text/javascript" src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js"></script>
    <style type="text/css">
        .no{color:red;}
        .yes{color:green;}
    </style>
    <script>
        $(document).ready(function(){
                // unique user name checking ------------- starts here----------------
                $("#username").blur(function(){
                        var form_data= {
                            action : 'check_username',
                            username : $(this).val
                        };

                        $.ajax({
                                type: "POST",
                                url : "check_unique_username",
                                data : form_data,
                                success : function(result) {
                                    $("#message").html(result.message);
                                    alert(result);
                                }
                        });
                });
                // unique username checking -------------- ends here-----------------
        });  

    </script>
</head>
<body>
    <form class="RegistrationForm" id="RegistrationForm" method="POST" action="">
        <label for="username">User Name</label>
        <div>
            <input id="username" name="username" size="25" class="required" />
        </div>
        <input type="button" id="button1" name="button1" value="check availability" />
        <div id="message"></div>
    </form>
</body>

ここに私のコントローラーコードがあります:

<?php
class Registration extends MX_controller {
    function index(){
        $this->load->view('registrationPage');  // this will load the registration page.
    }
    function unique_username() {
        $action = $_POST['action'];
        if($action=='check_username'){
            $u = $this->input->post('username');
            $users=array("jhon","neo","margo","hacker","user123");
            if(in_array($u,$user)) {
                echo json_encode(array('message' => "It is not available!"));

            }
            else {
                echo json_encode(array('message' => "It is available!"));

            }
        }
    }
}
?>

しかし、私のコードは機能していません。間違っているところがあります。助けてください..すべてのユーザー名で利用できることだけを示しています

編集済み:コントローラーコードを変更しました...

4

2 に答える 2

1

#div の id を使用している間は使用していないため、次を使用します。

$("#message").html(result);

それ以外の$("message").html(result);

于 2012-07-05T09:44:26.720 に答える
0

編集:更新された質問に対する更新された回答。

それは実際にはかなりばかげており、誰も見ることができませんでしたが、問題はこの文字列です: username : $(this).val. その理由は、.val がテキスト フィールドの値を取得する jQuery のメソッドではないためですusername : $(this).val()

これは最初の JS 部分をカバーしています。次の問題はタイプミスurl : "check_unique_username",です。url : "registration/unique_username",check_

次のタイプミスは PHP -if(in_array($u,$user)) {ですが、配列$usersがあるので、これを に変更するとif(in_array($u,$users)) {、PHP は通知をスローしません。

dataType: 'json',次の問題は、 AJAX リクエストの行の欠落です。JSが受け取ったデータ型を認識し、正しい方法で解析できるようにする必要があります。

その後、動作するはずです。しかし、私はあなたにいくつかの提案があります。PHP を変更して、文字列ではなくブール値を返すようにします。たとえば、利用できる場合は true、利用できない場合は false です。

if(in_array($u,$users)) {
    echo json_encode(array('message' => false));
} else {
    echo json_encode(array('message' => true));
}

そうすれば、JS コードでこのデータを簡単に操作できます。たとえば、次のコードを AJAX リクエストの成功部分に追加できます。

success : function(result) {
    if(result.message) { 
        $("#message").html("It's available!");
        $("#button1").removeAttr('disabled');
    } else {
        $("#message").html("It's not available!");
        $("#button1").attr('disabled','disabled');
    }
}

また、送信ボタンが有効/無効になります。これにより、通常のユーザーが取得したユーザー名を入力した場合、フォームを送信できなくなります。

また、イベントblurkeyupに変更すると、更新が速くなりますが、サーバーへの負荷が少し高くなります。イベントの問題blurは、ユーザーがユーザー名を入力してボタンをクリックできることです。これは、ユーザーが要素を離れた後にのみブラーイベントが発生するためです。

お役に立てれば!

于 2012-07-05T09:46:18.487 に答える