0

アクションではなくajaxで送信するフォームを取得しようとしただけで、まだ運がありません。phpスクリプトは機能し、アクション送信を通じて機能するようにテストされています。

これまでのところ、例を見て、ドキュメントを読み、SOの質問をしましたが、まだ答えがありません。これについてサポートが必要です。2週間前にこのユースケースをテストする予定でした。

送信すると、ページが更新されたように見えますが、何も起こりません。ユーザーアカウントはデータベースに挿入されず、アラートボックスは表示されません。誰かが何が悪いのか見ることができますか?

javascriptは次のようになります。

    $(document).ready(function()
{

$.validator.addMethod("uniqueuser", function(username){
    var response
    $.ajax({
        type: "POST",
        url: "check_username.php",
        data: "username=" + username,
        success: function(server_response){


                if(server_response == '0'){

                    response = true;
                }
                else if(server_response == '1'){

                    response = false;
                }

        }
    });
    return response;
}, "Username is not available");



$("#createaccount).validate({
    debug: false,
    rules:{
        fname:{
            required: true
        }
        surname:{
            required: true
        }
        email:{
            email:true,
            required: true
        }
        location:{
            required:true
        }
        username:{
            minlength: 6,
            required:true,
            uniqueuser:true
        }
        password:{
            required:true,
            minlength: 6
        }
        re_password:{
            required:true,
            equalTo: "#password"
        }
    }


    submitHandler: function(form){
        $.ajax({
            type: 'POST',
            url: 'createaccount2.php',
            data: $("#createaccount").serialize(),
            success: function(response){

                if(response == "1"){
                    alert("That username is already taken!");
                }
                else if(response == "2"){
                    alert("An account is already registered to that email address");
                }
                else if(response == "3"){
                    alert("Your account has been created!");
                }
                else if(response == "4"){
                    alert("Something went wrong, your account could not be created");
                }
            }

        });


    });
});
});

バリデーターに関する情報:http://docs.jquery.com/Plugins/Validation

4

3 に答える 3

1

スクリプト内にはたくさんの問題があります。それらはすべて、使用しているバリデータープラグインに明確に関連しています。1つは非同期呼び出しです。

$.validator(このプラグインはわかりませんが、参照を追加できますか?)を使用する場合は、ASYNCに設定されているものを使用してみてくださいreturn response;。(AJAXがサーバーからの応答を取得した後)。そのため、AJAXにはコールバック関数があります。これは、いつ設定されるかわからないためです。

何が起こっていますか?return、AJAX getが完了する前に実行され、変数を変更します(ただし、スコープは問題ありません)。

修正?非同期検証をサポートしているかどうかを確認するには、そのバリデータープラグインを詳しく調べる必要があります。

それ以外の場合は、独自のスクリプト検証を設定する必要があります。

于 2012-08-06T03:22:29.970 に答える
0

フォーム送信をフォームにどのように関連付けていますか?Form onSubmitイベントで何かをする必要がありますか?またはSubmitイベントハンドラーを使用しますか?

<form id="target" action="destination.html">

そしてこのように

$('#target').submit(function() {
  alert('Handler for .submit() called.');
  return false;
});

詳細: http: //api.jquery.com/submit/

于 2012-08-06T03:19:57.380 に答える
0
    <form id="target" onSubmit="return false;">
于 2012-08-06T05:19:09.353 に答える