使用AJAX异步更新页面内容

在现代Web开发中,用户体验至关重要。为了提供更流畅的交互体验,经常需要在页面加载后立即更新页面的某些部分。这可以通过AJAX(Asynchronous JavaScript and XML)技术实现。AJAX允许在不重新加载整个页面的情况下,与服务器进行数据交换和更新。本文将展示如何在页面加载后使用AJAX更新表格数据。

首先,需要在页面中创建一个表格,用于展示员工信息。这个表格将使用ASP.NET的GridView控件来实现。GridView控件允许定义列,并在页面加载时显示数据。可以通过定义TemplateField来自定义列的显示方式。

<asp:GridView ID="gvEmployee" runat="server" AutoGenerateColumns="false"> <Columns> <asp:TemplateField> <HeaderTemplate> <h3> Name </h3> </HeaderTemplate> <ItemTemplate> <asp:Label ID="name" runat="server" Text='<%# Eval("name") %>'' class="name"> </asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField> <HeaderTemplate> <h3> Address </h3> </HeaderTemplate> <ItemTemplate> <asp:Label ID="address" runat="server" Text="" class="address"> </asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>

接下来,将编写JavaScript代码,使用jQuery的AJAX方法来请求服务器。当页面加载完成后,将遍历表格中的每个名称标签,并发起AJAX请求以获取对应的地址信息。

<script type="text/javascript"> $(function() { $(".name").each(function() { var lblNameObj = this; $.ajax({ url: "UpdateTableWithAjax.aspx/GetAddress", type: "POST", contentType: "application/json", dataType: "json", data: {name : '' + this.innerHTML + ''} }).done(function(msg) { // 成功获取数据后更新地址 $("#" + lblNameObj.id).parent().next().children().html(msg.d); }).fail(function(xhr, msg) { alert(msg); }); }); }); </script>

在服务器端,需要处理AJAX请求并返回相应的地址信息。这可以通过ASP.NET的Page_Load事件和WebMethod来实现。在Page_Load事件中,初始化员工数据,并将其绑定到GridView控件。WebMethod用于处理AJAX请求并返回地址信息。

protected void Page_Load(object sender, EventArgs e) { List<ClsEmployee> lstEmp = new List<ClsEmployee>(); ClsEmployee emp1 = new ClsEmployee(); emp1.name = "Emp1"; lstEmp.Add(emp1); ClsEmployee emp2 = new ClsEmployee(); emp2.name = "Emp2"; lstEmp.Add(emp2); ClsEmployee emp3 = new ClsEmployee(); emp3.name = "Emp3"; lstEmp.Add(emp3); gvEmployee.DataSource = lstEmp; gvEmployee.DataBind(); } [WebMethod] public static string GetAddress(string name) { string adr = ""; // 循环用于模拟延迟 for (int i = 0; i < 10000; i++) { for (int j = 0; j < 5000; j++) { adr = "Address of " + name; } } return adr; }

最后,定义了一个简单的员工类ClsEmployee,用于存储员工的名称和地址信息。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485