阻止页面重新加载asp.net jquery javascript

时间:2012-10-11 22:19:42

标签: javascript asp.net jquery-mobile

我正在尝试使用asp.net和jQuery mobile登录页面。

当用户点击登录按钮时,我首先在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#中的密码加密

2 个答案:

答案 0 :(得分:1)

OnClick事件是服务器端事件。这就是它回发的原因。您想使用OnClientClick事件。这是为了在调用OnClick事件之前运行客户端代码。

那就是说,在调用javascript之前你需要运行什么服务器端代码?你究竟想做什么?

请详细说明流程。

答案 1 :(得分:0)

这将允许您在客户端处理click事件。 evt.preventDefault将确保按钮不会回发到服务器。

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

    if(!myCondition) {
        evt.preventDefault();
    }
    else{
    }
});