龙空技术网

如何处理异步请求如何使用AJAX检测

王二辉 137

前言:

此刻姐妹们对“ajax访问aspx”可能比较着重,咱们都需要学习一些“ajax访问aspx”的相关内容。那么小编也在网上网罗了一些对于“ajax访问aspx””的相关知识,希望咱们能喜欢,我们快快来学习一下吧!

在本文中,您将学习如何使用AJAX来检测在调用另一个异步请求时是否仍处理异步请求。通过这样做,我们可以通知用户,并允许第一个请求在启动另一个请求之前完成。

为了演示这一点,我们将创建两个UpdatePanels,每个UpdatePanels显示当前的日期和时间以及一个按钮。每个按钮将在单击时更新自己的UpdatePanel。但是,当第一个按钮被点击时,我们将有意地使该过程需要3秒钟来完成,给我们足够的时间点击第二个按钮进行测试。当第一个仍在处理时点击第二个按钮,我们应该被通知一个进程仍然是活动的,不允许第二个进程启动。

我们先来添加ScriptManager和两个UpdatePanels:

<form id =“form1”runat =“server”>

<asp:ScriptManager ID =“SM1”runat =“server”/>

<asp:UpdatePanel ID =“UP1”runat =“server”UpdateMode =“Conditional”>

<的ContentTemplate>

</的ContentTemplate>

</ ASP:的UpdatePanel>

<br /> <br />

<asp:UpdatePanel ID =“U2”runat =“server”UpdateMode =“Conditional”>

<的ContentTemplate>

</的ContentTemplate>

</ ASP:的UpdatePanel>

<br /> <br />

</ FORM>

请注意,我们将两个面板上的UpdateMode设置为Conditional。这是因为我们不希望它们同时更新 - 每个按钮只能更新自己的UpdatePanel。

让我们继续添加按钮和当前时间到UpdatePanels:

<asp:UpdatePanel ID =“UP1”runat =“server”UpdateMode =“Conditional”>

<的ContentTemplate>

<%= DateTime.Now.ToString()%>

<br />

<asp:Button ID =“btn_GetTime1”runat =“server”Text =“Get Time(1)”OnClick =“btn_GetTime1_Click”/>

</的ContentTemplate>

</ ASP:的UpdatePanel>

<br /> <br /> <asp:UpdatePanel ID =“U2”runat =“server”UpdateMode =“Conditional”>

<的ContentTemplate>

<%= DateTime.Now.ToString()%>

<br />

<asp:Button ID =“btn_GetTime2”runat =“server”Text =“Get Time(2)”/>

</的ContentTemplate>

</ ASP:的UpdatePanel>

现在在代码背后,在第一个按钮的点击事件中,我们会故意让线程睡眠3秒钟。喜欢这个

使用System.Threading;

..

protected void btn_GetTime1_Click(object sender,EventArgs e)

{

Thread.sleep代码(3000);

}

为了使请求更加可视化,我们还可以在组合中添加一个UpdateProgress。当请求正在进行时,这将显示:

<asp:UpdateProgress ID =“UPr1”runat =“server”AssociatedUpdatePanelID =“UP1”>

<ProgressTemplate>

<br /> <br />

请稍候..

</ ProgressTemplate>

</ ASP:的UpdateProgress>

我们还将包括一些JavaScript来检查Async PostBack是否正在进行中。为此,请添加以下脚本:

<script type =“text / javascript”>

var instance = Sys.WebForms.PageRequestManager.getInstance();

instance.add_initializeRequest(instance_initializeRequest);

function instance_initializeRequest(sender,args){

if(instance.get_isInAsyncPostBack()){

alert('仍然处理请求,请稍候..)

args.set_cancel(真);

}

}

</ SCRIPT>

ASPX页面将如下所示:

展开| 选择| 包裹| 行号

<BODY>

<form id =“form1”runat =“server”>

<asp:ScriptManager ID =“SM1”runat =“server”/>

<asp:UpdatePanel ID =“UP1”runat =“server”UpdateMode =“Conditional”>

<的ContentTemplate>

<%= DateTime.Now.ToString()%>

<br />

<asp:Button ID =“btn_GetTime1”runat =“server”Text =“Get Time(1)”OnClick =“btn_GetTime1_Click”/>

</的ContentTemplate>

</ ASP:的UpdatePanel>

<asp:UpdateProgress ID =“UPr1”runat =“server”AssociatedUpdatePanelID =“UP1”>

<ProgressTemplate>

<br /> <br />

请稍候..

</ ProgressTemplate>

</ ASP:的UpdateProgress>

<br /> <br />

<asp:UpdatePanel ID =“U2”runat =“server”UpdateMode =“Conditional”>

<的ContentTemplate>

<%= DateTime.Now.ToString()%>

<br />

<asp:Button ID =“btn_GetTime2”runat =“server”Text =“Get Time(2)”/>

</的ContentTemplate>

</ ASP:的UpdatePanel>

<br /> <br />

</ FORM>

</ BODY>

</ HTML>

<script type =“text / javascript”>

var instance = Sys.WebForms.PageRequestManager.getInstance();

instance.add_initializeRequest(instance_initializeRequest);

function instance_initializeRequest(sender,args){

if(instance.get_isInAsyncPostBack()){

alert('仍然处理请求,请稍候..)

args.set_cancel(真);

}

}

</ SCRIPT>

标签: #ajax访问aspx #ajax做异步处理