1

JQuery検証プラグインのリモート検証を追加した登録フォームがありました。リモート検証の目的は、ユーザーが入力した電子メール/およびユーザー名がデータベースに既に存在するかどうか(つまり、すでに使用されているかどうか)を確認することです。ある場合はエラーメッセージを返します。リモート検証を追加する前にフォームは機能していました。

現在、入力したすべてのデータが正しい場合でもフォームを送信できません。データベースに既に存在する電子メールを入力しても、エラー メッセージは表示されません。

私のJQueryコード:

    $(document).ready(function(){
<!--AJAX Call to retrieve type & subtype of industries-->
    $("#type").load("getregtype.php");

    $('#type').change(function(){
        var type=$('#type').val();
        $('#subtype').load('getregsubtype.php?type='+type);
    });
<!--End of AJAX Call -->

<!--JQuery validation of registration form-->
<!--Set default message for 'equalTo' errors-->
$.extend($.validator.messages, { equalTo: "The values you entered do not match." });
    $("#regform").validate({

        // Specify the validation rules
        rules: {
            username: "required",

            password: {
                required:true,
                minlength:6,
            },

            cpassword: {
                required: true,
                minlength: 6,
                equalTo: "#password"
            },  

            email: {
                required: true,
                email: true,
                remote:"emailcheck.php"
            },

            cemail: {
                required: true,
                email: true,
                equalTo:"#email"

            },

            type: {
                required: true
            },

            subtype: {
                required: true
            },
            name: "required"
        },

        // Specify the validation error messages
        messages: {
            username: "Please enter a username",
            email: {
                required:"Please enter an email address",
                email:"Please enter a valid email address",
                remote:jQuery.format("{0} is already in use")
            },
            cemail: {
                required:"Please enter an email address",
                email:"Please reenter your email address",

            },

            password: {
                required: "Please enter a password",
                minlength: "Your password must be at least 6 characters long"
            },
            cpassword: {
                required:"Please reenter your password",
                minlength: "Your password must be at least 6 characters long"

            },
            name: "Please enter the name of your business"
        },

        submitHandler: function(form) {
            form.submit();
        }
    });


});

リモートから呼び出される私の PHP ページ。

 <?php

include("cxn.inc");

$query=$cxn->prepare("SELECT * FROM `testdb`.`business` WHERE `Email` = :email");
$query->bindValue(":email",$_GET['email']);
$query->execute();
$count=$query->rowCount();
$mail=$_GET['email'];
print_r($mail);
echo"$count";
if($count>0)
{

    echo json_encode('false');

}
else
{
    echo json_encode('true');
}

?>

試したこと

print_r($mail) と echo"$count"; どちらも正しい値を返します。私も試しました

echo json_encode(true);

としても

return true;

編集

私が試したいくつかのこと。

echo true;

また、次のようにして値が「emailcheck.php」に渡されなかった可能性があるため、URLを介して直接メールの値を渡そうとしました。

email: {
            required: true,
            email: true,
            remote:"emailcheck.php?email=test@test.com"
        },

しかし、私のフォームはまだ機能しません。

私の問題に対する洞察に感謝します。

ありがとう!

4

3 に答える 3

3

PHP スクリプトは、email という名前の GET パラメータを想定しています。ここでエラーの可能性を排除するために、jQuery コードで明示的に設定できます。

    rules: {
        /* Code skipped ... */

        email: {
            required: true,
            email: true,
            type: "get",
            remote:"emailcheck.php"
            data: {
                email: function() {
                           return $("#email").val();
                       }
            }
        },
        /* ... */

$('#email')フォーム入力と本当に一致していることを確認してください。

Firebug または同等のツールを使用して応答を確認することもできます (ブラウザー ウィンドウで F12 を押して、何が表示されるかを確認してください)。応答の MIME タイプが であることを確認することをお勧めしますapplication/json

于 2013-08-11T09:53:22.663 に答える
0

まず、コンソールで js エラーを確認します。問題がない場合は、スクリプトが送信するものと、php から受信するものも確認します

于 2013-08-11T09:39:37.240 に答える