1

ユーザー名とパスワードを使用したログインフォームがあります。ユーザーを使用して Web サービスに投稿し、パラメーターとして渡すと、そのユーザーの ID が返されます。

私が達成しようとしているのは、フォームの送信時に ajax 呼び出しが行われ、ID フィールド (必要) が入力され、 を使用してフォームが送信されること$('#form1').post();です。

デフォルトの動作を防ぐために、イベントreturn false;の最初に があります。.submit()

$('#form1').submit(関数() {         
        $('#sajax-loader').show();        
        $.ajax({
            タイプ: "ポスト",
            contentType: "application/json; charset=utf-8",
            データ: '{user:"' + $("#user").val() + '",pass:"' + $("#pass").val() + '"}',
            url: "URL.asmx/validate",
            データ型: "json",
            成功: 関数 (データ) {
                $('#id').val(data.d);                
                $('#sajax-loader').hide();                                             
                $('#form1').post();
                $('#ログイン通知').show();                                
            }、
            エラー: 関数 (エラー) {
                $('#login-notification').html("エラーが発生しました" + err);
            }
        });
        false を返します。
    });

送信時に応答がないため、明らかにこれは間違ったアプローチです。

誰かが私を正しい方向に導くことができますか? ここにあるこの送信機能を微調整する方法、またはまったく異なるより実用的なアプローチについてアドバイスをお願いします。

4

1 に答える 1

3

開始すると、コードの残りの部分が実行されていない場所からその時点return falseで関数の実行が停止します。だから、あなたを最後に置いてください。submit()returnreturn false

逆に、.preventDefault()を使用すると、デフォルトのフォーム送信動作が停止します。

$('#form1').submit(function(e) { 

        // instead of return false
        // use e.preventDefault()           

        e.preventDefault();
        $('#sajax-loader').show();        
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            data: '{user:"' + $("#user").val() + '",pass:"' + $("#pass").val() + '"}',
            url: "URL.asmx/validate",
            dataType: "json",
            success: function (data) {
                $('#id').val(data.d);                
                $('#sajax-loader').hide();                                             
                $('#form1').post();
                $('#login-notification').show();                                
            },
            error: function (err) {
                $('#login-notification').html("An Error Occured " + err);
            }
        });
    });

そして、一つのこと

それ以外の

data: '{user:"' + $("#user").val() + '",pass:"' + $("#pass").val() + '"}',

あなたが使用することができます:

data: {user: $("#user").val() ,pass: $("#pass").val() },

于 2012-08-08T13:51:54.237 に答える