Asp.NET MVC AjaxOptions OnSuccess é acionado ... muito cedo?
Eu gostaria de usar a opção OnSuccess de AjaxOptions passado como argumento Ajax.BeginForm para "fazer algo" uma vez que a resposta é completamente recebida e DOM atualizado. Tanto quanto eu posso entender do MSDN, isso é o que esta opção faz.
No meu aplicativo, o script OnSuccess é acionado cedo demais, imediatamente após o envio da solicitação. Eu ponho para dormir o fio por um tempo, para ver melhor o resultado. Eu deveria ver o script OnSuccess (um alerta) disparado após o tempo de sono, digamos, 2 segundos. Eu uso o Firebug para ver o que está acontecendo sob o capô, e tudo que vejo é: clico no botão (enviar dentro do formulário ajax), alerta é mostrado (2 segundos antes do esperado), após 2 segundos o firebug mostra o pedido-resposta e nada mais acontece.
Onde eu estou errado?
Agradecemos antecipadamente, mt
Algum exemplo de código, como corretamente solicitado (eu comecei uma nova solução em branco usando o modelo Asp.NET MVC no VS):
Home / Visualização de índice:
<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();
}
}
Eu acho que isso é suficiente para reproduzir o comportamento. Uma vista parcial vazia pode ser usada como vista DoLongTask.