【发布时间】:2010-11-15 02:48:24
【问题描述】:
一旦完全收到响应并更新 DOM,我想使用作为 Ajax.BeginForm 参数传递的 AjaxOptions 的 OnSuccess 选项来“做某事”。据我从 MSDN 可以理解,这就是这个选项的作用。
在我的应用程序中,OnSuccess 脚本在请求发送后立即触发太早。我让线程休眠了一段时间,以便更好地查看结果。我应该看到 OnSuccess 脚本(警报)在该睡眠时间之后触发,例如 2 秒。我使用 Firebug 来查看幕后发生的事情,我所看到的只是:我单击按钮(在 ajax 表单中提交),显示警报(比预期早 2 秒),2 秒后,firebug 显示请求响应,什么也没有更多的事情发生。
我哪里错了?
提前致谢, 吨
一些示例代码,如正确询问(我在 VS 中使用 Asp.NET MVC 模板开始了一个空白的新解决方案):
主页/索引视图:
<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>
家庭控制器
public ActionResult DoLongTask()
{
if (Request.IsAjaxRequest())
{
System.Threading.Thread.Sleep(2000);
return View();
}
else
{
throw new NotSupportedException();
}
}
我认为这足以重现该行为。空的局部视图可以用作 DoLongTask 视图。
【问题讨论】:
-
代码添加为(正确)询问!