Me gustaría utilizar la opción OnSuccess de AjaxOptions pasada como argumento Ajax.BeginForm para "hacer algo" una vez que la respuesta se haya recibido por completo y se haya actualizado DOM. Por lo que puedo entender desde MSDN, esto es lo que hace esta opción.Asp.NET MVC AjaxOptions OnSuccess se dispara ... ¿demasiado pronto?
En mi aplicación, la secuencia de comandos OnSuccess se dispara demasiado pronto, inmediatamente después de enviar la solicitud. Pongo a dormir el hilo por un tiempo, para ver mejor el resultado. Supongo que veré el script OnSuccess (una alerta) disparado después de ese tiempo de suspensión, digamos, 2 segundos. Uso Firebug para ver lo que ocurre debajo del capó, y todo lo que veo es: hago clic en el botón (enviar dentro del formulario ajax), aparece la alerta (2 segundos antes de lo esperado), después de 2 segundos Firebug muestra la solicitud y respuesta y nada más sucede.
¿Dónde me equivoco?
Gracias de antemano, mt
algunos ejemplos de código, tal como solicitó correctamente (Empecé una nueva solución en blanco usando la plantilla Asp.NET MVC en VS):
vista Inicio/Í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();
}
}
Creo que esto es suficiente para reproducir el comportamiento. Una vista parcial vacía se puede usar como vista DoLongTask.
publicar ... su ... código ...! – womp
¡Código agregado como (correctamente) preguntado! – ccalboni