0

こんにちは、Eclipse の Web アプリケーションに簡単な登録フォームがあります。そして、重複したユーザー名を制御するためのこの小さなスクリプトを作成します。

<script type="text/javascript">

        $(document).ready(function() {
            $('#idBtnRegister').click(function(){

                username = $('#idUsername').val();

                CCService.findUsername(username,{
                    callback: function(find) {
                        if(find == true) {

                            $('#idUsername').popover({ html: true, content: 'username already exist', placement: 'right' });
                            $('#idUsername').popover('show');
                        }



                        else {
                            url = '<%= CCGestioneConstants.CONTEXT_PATH %>' + '/registered'; 

                            var params = {};
                            params["username"] = $('#idUsername').val();
                            params["name"] = $('#idName').val();
                            params["surname"] = $('#idSurname').val();
                            params["password"] = $('#idPassword').val();
                            params["email"] = $('#idEmail').val();

                            $.ajax({
                                type: 'POST',
                                data: params,
                                url: url,
                                async: false,
                                cache: false,
                            });

                        }
                    },
                    async: false
                });

            }); 

        });

</script>

CCService.findUsername DWR 呼び出しです。

public boolean findUsername(String username) throws SQLException, ClassNotFoundException {
        UserDao userDao = new UserDao();
        boolean find = userDao.findUserByUsername(username);

        return find;
    }

URL は、/registerd にマップされたサーブレットを呼び出す必要があります

url = '<%= CCGestioneConstants.CONTEXT_PATH %>' + '/registered';  

実際にはすべて機能します。ユーザー名がまだ存在しない場合、ユーザーはデータベースに追加されますが、サーブレットではコマンド:

request.getRequestDispatcher("html/pages/registered.jsp").forward(request, response);

jsp でリダイレクトしないでください。しかし、私はまだ登録ページにいます。

なぜ?

4

1 に答える 1

0

あなたの呼び出しは Ajax にあります。window.location = url を使用して、Ajax 応答にハンドラーを追加し、ブラウザーをページ (registered.jps) にリダイレクトする必要があります。

サーブレットの転送は機能するかもしれませんが、Ajax でサーブレットを呼び出しても、Web ページのコンテンツには何の影響もありません。

于 2013-11-12T12:06:58.953 に答える