我想使用作为Ajax.BeginForm参数传递的AjaxOptions的OnSuccess选项,在响应完全接收并更新DOM后“做某事”。据我从MSDN理解,这就是此选项所执行的操作。
在我的应用程序中,OnSuccess脚本太早地触发,即在请求发送后立即触发。我将线程休眠一段时间,以更好地查看结果。我希望在休眠时间(比如2秒)之后看到OnSuccess脚本(一个警报)被触发。我使用Firebug查看了底层发生了什么,但我看到的只有:我单击按钮(ajax表单中的提交),警报显示出来(比预期提前2秒),2秒后firebug显示请求-响应,然后什么都没有发生。
我错在哪里?
谢谢, mt
如要求所述,以下是一些示例代码(我在VS中使用Asp.NET MVC模板开始了一个空白新解决方案):
Home/Index视图:
在我的应用程序中,OnSuccess脚本太早地触发,即在请求发送后立即触发。我将线程休眠一段时间,以更好地查看结果。我希望在休眠时间(比如2秒)之后看到OnSuccess脚本(一个警报)被触发。我使用Firebug查看了底层发生了什么,但我看到的只有:我单击按钮(ajax表单中的提交),警报显示出来(比预期提前2秒),2秒后firebug显示请求-响应,然后什么都没有发生。
我错在哪里?
谢谢, mt
如要求所述,以下是一些示例代码(我在VS中使用Asp.NET MVC模板开始了一个空白新解决方案):
Home/Index视图:
<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
<div id="divPlaceholder">
<%
using (Ajax.BeginForm("DoLongTask", "Home",
new AjaxOptions() {
UpdateTargetId = "divPlaceholder",
InsertionMode = InsertionMode.Replace,
OnSuccess = "alert('onsuccess fired')"
}))
{
%>
<input type="submit" value="button" />
<% } %>
</div>
</asp:Content>
HomeController
public ActionResult DoLongTask()
{
if (Request.IsAjaxRequest())
{
System.Threading.Thread.Sleep(2000);
return View();
}
else
{
throw new NotSupportedException();
}
}
我认为这足以重现该行为。可以使用空的部分视图作为DoLongTask视图。