Я хотел бы использовать параметр OnSuccess AjaxOptions, переданный в качестве аргумента Ajax.BeginForm, чтобы «сделать что-то» после того, как ответ полностью получен и DOM обновлен. Насколько я могу понять от MSDN, это то, что делает этот параметр.
В моем приложении сценарий OnSuccess срабатывает слишком рано, сразу после отправки запроса. Я уложил ветку на некоторое время, чтобы лучше увидеть результат. Я предполагал, что сценарий OnSuccess (предупреждение) будет запущен после этого времени ожидания, скажем, 2 секунды. Я использую Firebug, чтобы увидеть, что происходит под капотом, и все, что я вижу: я нажимаю кнопку (отправить внутри формы ajax), появляется предупреждение (за 2 секунды до ожидаемого), через 2 секунды firebug показывает запрос-ответ и ничего больше происходит.
Где я не прав?
Заранее спасибо,
мт
Некоторый пример кода, как правильно было сказано (я запустил пустое новое решение, используя шаблон Asp.NET MVC в VS):
Главная / Указатель:
<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.