0

ここに私のスニップネットをテストするための簡単なログインがあります:AJAX


<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Login Test Page</title>
<script src="../js/jquery-1.10.1.min.js" ></script>
<script type="text/javascript">
$('input[type="submit"]').click(function(e) {
    e.preventDefault();
    var action_script = $(this).closest('form1').prop('action');
    $.post(action_script, {
        userName : $(this).closest('form1').find('input[name="userName"]'),
        password : $(this).closest('form1').find('input[name="password"]')
    }, function(returned_data) {
        //this part executes once the server returns a successful response
        alert("Please fill UserName & Password!");
    });
});
</script>
</head>
<body>
    <form action="LoginController" method="post">
        <!-- Login body -->
        <table>
            <tr>
                <td><label for="userName">Username:</label></td>
                <td><input type="text" name="userName" /></td>
            </tr>
            <tr>
                <td><label for="password">Password:</label></td>
                <td><input type="password" name="password" /></td>
            </tr>
            <tr>
                <td><input type="submit" /></td>
            </tr>
        </table>
    </form>
</body>

そしてコントローラー

UserDAO userDAO = new UserDAO(); // instantiate database

        String userName = request.getParameter( "userName" ); // get userName String from the Login.jsp
        String password = request.getParameter( "password" ); // get password String from the Login.jsp

        if( userDAO.authenticate( userName, password ) ) // validate userName and password
        {

            UserModel userModel = userDAO.getUserDetails( userName ); // get userModel that correspond to userName parameter

            request.getSession().setAttribute( "userName", userName ); // set SESSION REQUEST to be forward to MainPage.jsp
            request.setAttribute( "userDetails", userModel ); // set REQUEST to be forward to MainPage.jsp

            RequestDispatcher rd = request.getRequestDispatcher( "MainPage.jsp" );
            rd.forward( request, response ); // forward request to MainPage.jsp
            return;
        }
        else
        {
            response.sendRedirect( "Login.jsp" );
            return;
        }

私がやりたいのは、ログインに失敗した場合、ユーザー名とパスワードを保持してAJAX動作をテストし、可能であればテストしたいのですが、テストするJSONためにどこに実装すればよいかまだわかりませんJSON

Web開発は初めてなので、何が間違っているのかわかりません。ご案内ください。

4

1 に答える 1

0

ここでの主な問題は、サーバーが何を返すかです。オブジェクトを返したいのですJSONが、Web ページを返すことになります (ほとんどの場合、HTML)。

ここには 2 つのオプションのうちの 1 つが表示されます (それ以上の可能性もありますが、現時点では考えられません)。

  1. JSON投稿用に別の URL ( などaction_script + ".json") を用意し、コントローラー内で、ユーザーの資格情報を検証するロジックを、結果をブラウザーに返すロジックから切り離すことができます。つまり、1 つのメソッドではなく、次の 3 つのメソッドがあります。(a) ユーザー資格情報を検証する内部メソッド、(b) (a) を呼び出してリターンHTMLまたはリダイレクトするパブリック メソッド、(c) (a) を呼び出すパブリック メソッド。 )、オブジェクトを返しJSONます。
  2. または、受信している投稿のタイプを検出してXHRリクエストを探し (および/またはリクエストのヘッダーをチェックして "application/json" の content-type を探して) JSON、それらの状況でオブジェクトを出力することもできます。

実装は実際にはあなた次第であり、アプリケーションをどの程度柔軟にするかはあなた次第です。

于 2013-08-24T13:50:16.283 に答える