0

asp.netとjQuerymobileでログインページを作成しようとしています。

ユーザーがログインボタンをクリックすると、最初にc#で処理を行い、次にJavaScriptを呼び出します。

問題は、ログインボタンを押すと、JavaScriptを実行する前にページがリロードされているように見えることです。

これが私のコードです:

<asp:Button name="login" ID="btnLogin" runat="server" Text="Login" OnClick="btnLogin_Click" />

c#:

protected void btnLogin_Click(object sender, EventArgs e)
{
    if (String.Format("{0}", Request.Form["username"]) != "" && String.Format("{0}", Request.Form["password"]) != "")
    {

        ClientScript.RegisterStartupScript(GetType(), "key", "login();", true);

    }
    else
    {
        //todo
    }

}

JS / jQuery:

<script type="text/javascript">
    function login() {
        jQuery(function () {
            jQuery.ajax({
                beforeSend: function () {
                    $.mobile.loading('show', {
                        text: 'Processing...',
                        textVisible: true,
                        theme: 'a'
                    });
                }, 
                type: "GET",
                url: "Handler.ashx",
                data: "method=validate",
                success: function (data) {

                    $.mobile.loading('hide');
                    //$.mobile.changePage("HomePage.aspx", { transition: "fade" });

                }
            });
        });
    };
</script>

何か案が?

ありがとう!

編集:C#にあるパスワード暗号化を処理するためにサーバー側のコードがまだ必要です

4

2 に答える 2

1

OnClickイベントはサーバー側のイベントです。それが投稿している理由です。OnClientClickイベントを利用したい。OnClickこれは、イベントが呼び出される前にクライアント側のコードを実行するためのものです。

そうは言っても、JavaScriptを呼び出す前にどのサーバー側コードを実行する必要がありますか?正確に何をしようとしていますか?

プロセスフローについて詳しく説明してください。

于 2012-10-11T22:28:21.037 に答える
0

これにより、クライアント側でクリックイベントを処理できるようになります。evt.preventDefaultボタンがサーバーにポストバックしないようにします。

$('#btnLogin').click(function(evt) {

    if(!myCondition) {
        evt.preventDefault();
    }
    else{
    }
});
于 2012-10-11T22:30:46.883 に答える