我想知道。我尝试用谷歌搜索答案,但他们没有给我答案。谢谢。
问问题
372 次
1 回答
2
是的,ASP.NET AJAX 页面方法将在用户离开页面后继续执行,但结果(如果有)不会返回到页面,因为发起请求的页面现在已经消失了。
例如:
页面代码隐藏Default.aspx
:
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod]
public static string GetHelloWorld()
{
Thread.Sleep(20000);
return "Hello World";
}
protected void ButtonContactRedirect_OnClick(object sender, EventArgs e)
{
Response.Redirect("Contact.aspx");
}
}
页面上的标记Default.aspx
:
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
type: "POST",
url: "Default.aspx/GetHelloWorld",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert(msg);
}
});
});
</script>
<asp:Button runat="server" ID="ButtonContactRedirect" Text="Go to Contacts Page" OnClick="ButtonContactRedirect_OnClick"/>
所以我们有一个按钮,当用户点击它时,Default.aspx
它会重定向到另一个页面( )。Contacts.aspx
同时,当Default.aspx
被加载时,页面方法有一个 AJAX 调用,在返回字符串之前会休眠 20 秒Hello World
。
如果您在以下行放置一个断点:
return "Hello World";
当您运行程序并加载页面时,如果您在 20 秒内未单击该按钮,则 AJAX 成功回调将触发,并且警报将显示返回的字符串对象。如果您在 20 秒睡眠结束之前按下按钮,Redirect()
则会发生并Contacts.aspx
加载页面,但一旦睡眠结束,就会触发断点;但是返回的Hello World
字符串将会丢失,因为 AJAX 上下文是绑定到Default.aspx
页面而不是Contacts.aspx
页面,现在已经消失了。
于 2013-09-17T14:55:14.203 回答