簡體   English   中英

從數據庫獲取數據而無需刷新ASP.NET中的頁面

[英]Get data from database without refreshing the page in ASP.NET

我正在用ASP.net和SQL Server做一個項目。 我正在用戶登錄屏幕上調用存儲過程以驗證用戶身份。 但是,當我調用存儲過程時,需要刷新整個頁面才能獲取數據。

如何在不刷新頁面的情況下實現相同目的?

這是我當前的代碼

sql = "EXEC dbo.sProc_Admin_Auth @UserNm = '" + User + "',@Pwd = '"+Pwd+"'";

cmd = new SqlCommand(sql, cn.connect());

dr = cmd.ExecuteReader();

if(dr.Read())
{
    Session["UserId"] = dr["UserId"].ToString();
    Session["LoginId"] = User;
    Session["UserNm"] = dr["FullNm"].ToString();// "Jayasurya Satheesh";
    Session["Email"] = dr["Email"].ToString();
    Session["JoinDt"] = dr["CreateDt"].ToString();

    Response.Redirect("Index.aspx");
    LblError.Visible = false;
}
else
{
    LblError.Visible = true;
    LblError.Text = "Login Failed!";
}

如果要加載數據而不刷新頁面。 您可以公開webservice方法或創建頁面方法,然后可以通過ajax調用ASP.NET頁面方法

[WebMethod]
public static string Insert_Data(string user, string pwd)
{   
            sql = "EXEC dbo.sProc_Admin_Auth @UserNm = '" + User + "',@Pwd = '"+Pwd+"'";

            cmd = new SqlCommand(sql, cn.connect());

            dr = cmd.ExecuteReader();

            if(dr.Read())
            {
                Session["UserId"] = dr["UserId"].ToString();
                Session["LoginId"] = User;
                Session["UserNm"] = dr["FullNm"].ToString();// "Jayasurya Satheesh";
                Session["Email"] = dr["Email"].ToString();
                Session["JoinDt"] = dr["CreateDt"].ToString();
                Response.Redirect("Index.aspx");
                LblError.Visible = false;
            }
            else
            {
                LblError.Visible = true;
                LblError.Text = "Login Failed!";
            }

}

客戶端

 $(document).ready(function () {

            $('#btnsubmit').click(function () { 
               var name = $('#user').val();


                var sex = $('#pwd').val();

                $.ajax({

                    type: 'POST',

                    contentType: "application/json; charset=utf-8",

                    url: 'Default.aspx/Insert_Data',

                    data: "{'user':'" + user+ "','pwd':'" + pwd + "'}",

                    async: false,

                    success: function (response) {

                        alert("Record saved successfully..!!");

                    },

                    error: function () {

                        alert("Error");

                    }

                });

            });

        });

根據您擁有的代碼,在Web Forms您可以:

使用Ajax Extension ,這是一個簡單的示例:

.aspx文件

    <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:TextBox runat="server" id="username" name="username" placeholder="Enter Username"></asp:TextBox>
            <asp:TextBox name="passwd" ID="passwd" runat="server" placeholder="Enter Password"></asp:TextBox>
            <asp:Button ID="Button1" runat="server" Text="Login" onclick="Button1_Click" />
            <br />
            <asp:Label ID="LblError" runat="server"></asp:Label>
        </ContentTemplate>
        </asp:UpdatePanel>
    </div>
    </form>
</body>
</html>

aspx.cs文件-將其添加到登錄按鈕的Click事件

 protected void Button1_Click(object sender, EventArgs e)
        {
            string sql = "";
            SqlConnection cn = null;
            SqlCommand cmd = null;
            SqlDataReader dr = null;
            string User = username.Text;
            string Pwd = passwd.Text;
            //cn = "<< your connection string>>";
            try
            {
                cn.Open();
                // Your code

                sql = "EXEC dbo.sProc_Admin_Auth @UserNm = '" + User + "',@Pwd = '" + Pwd + "'";

                cmd = new SqlCommand(sql, cn);

                dr = cmd.ExecuteReader();

                if (dr.Read())
                {
                    Session["UserId"] = dr["UserId"].ToString();
                    Session["LoginId"] = User;
                    Session["UserNm"] = dr["FullNm"].ToString();// "Jayasurya Satheesh";
                    Session["Email"] = dr["Email"].ToString();
                    Session["JoinDt"] = dr["CreateDt"].ToString();
                    Response.Redirect("Index.aspx");
                    LblError.Visible = false;
                }
                else
                {
                    LblError.Visible = true;
                    LblError.Text = "Login Failed!";
                }
            }
            catch (Exception exce)
            {
                LblError.Text = exce.Message;
            }
            finally
            {
                cn.Close();
            }
        }

您可以在工具箱-> Ajax擴展下找到UpdatePanel和ScriptManager。


使用try-catch塊來處理運行時異常。

我知道3種可能的方式:

1)使用更新面板:
參見示例: http : //www.aspdotnet-pools.com/2014/07/ajax-login-form-in-aspnet-using-cnet.html

2)使用webmethod:
參見示例: http : //www.aspforums.net/Threads/133296/Develop-simple-AJAX-Login-form-using-jQuery-in-ASPNet/

3)使用分層編碼:
參見示例: https : //www.codeproject.com/Articles/170882/jQuery-AJAX-and-HttpHandlers-in-ASP-NET

我更喜歡方法3編碼,因為它更靈活並且分層編碼概念可移植到其他Web編程平台。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM