2

編集

わかりましたので、問題なくログインできますが、誤った情報を入力するとログイン ページにリダイレクトされます。必要なのは、同じページにとどまってエラー メッセージを表示することe.preventDefault();です。動作していないようです。

   $(function() { 
    $("#login-form").submit(function(e) { 
        $('.fail').hide();
        $.ajax({  
            url:"/login",
            type: "post",  
            data: $(this).serialize(),
            error:function(){
                $('.fail').show();
                e.preventDefault();
            },
            success: function(){ 
                document.location = '/'; 
                }
        });
        return false; 
    });
});
4

3 に答える 3

4

フォームで実際に何もしていないので、コードにコメントして、何が起こっているのかを説明してみてください。

このコードにPHPサーバー側を使用していると思います。

PHP では、ユーザーの資格情報を確認してからブラウザーに伝えます。ログインが成功した場合は返信し"y"、失敗した場合は返信し"n"ます。

<script type="text/javascript">
$(function() { 
    $("#login-form").submit(function() { 
        $('.fail').hide();
        $.ajax({  
            url:"/login",
            type: "post",  
            data: $(this).serialize(),
            error:function(){
                $('.fail').show();
            },
            success: function(data) {
                if (data == "y") {
                   //Login was successful. Redirect statement here?
                } else {
                   //Failed login message here
                }
            }
        });
        return false; 
    });
});
</script>

編集

これを成功関数に追加してみてください。ログインに成功した場合とログインに失敗した場合の結果を教えてください。

success: function(data) {
    console.log(data);
}

編集 2

これは、ログインに失敗しただけで、ajax 呼び出しが成功したためです。これが、成功ハンドラーが呼び出される理由です。

これをソートするには、サーバーから何が返されているかを確認する必要があります。その場合、次を試してください:

success: function(data) {
    if (data == "") {
        e.preventDefault();
    } else {
        //Login successful, redirect user.
    }
}
于 2012-07-27T11:52:27.103 に答える
0

次を追加する必要があります。

success: function(data){ 
   /* Validation data here, if authentication answer is correct */
   if(data == 'ok')
       document.location = '/'; 
   else 
      /* show error here */
}
于 2012-07-27T11:53:14.727 に答える
0

URL が見つかり、アクセスできる場合に成功します。
URLが見つからない場合にエラーが発生します。
コールバック MSG を確認したい場合は、URL ページに印刷してデータを確認する必要があります。このような:

<script type="text/javascript">
$(function() { 
$("#login-form").submit(function() { 
    $('.fail').hide();
    $.ajax({  
        url:"/login",
        type: "post",  
        data: $(this).serialize(),
        success:function(data){
            if(data=="true"){
               alert("success");
            }else{
               alert("faild")
            }
        }
    });
    return false; 
});
});

</script>

login.php で

<?php
//check if for true...
echo "true";
//and if it is not true...
echo "false";
?>

成功したデータパラメータは、 "/login"の html コンテンツを取得する文字列です。

于 2012-07-27T12:27:40.047 に答える