Mi piacerebbe utilizzare l'opzione OnSuccess di AjaxOptions passata come argomento Ajax.BeginForm per "fare qualcosa" una volta che la risposta è stata completamente ricevuta e il DOM aggiornato. Per quanto posso capire da MSDN, questo è ciò che fa questa opzione.Asp.NET MVC AjaxOptions OnSuccess spara .. troppo presto?
Nella mia applicazione, lo script di OnSuccess scatta troppo presto, immediatamente dopo l'invio della richiesta. Ho messo a dormire il filo per un po ', per vedere meglio il risultato. Dovevo vedere lo script di OnSuccess (un avviso) sparato dopo il tempo di sonno, diciamo, 2 secondi. Uso Firebug per vedere cosa succede sotto il cofano e tutto quello che vedo è: clicco sul pulsante (invio all'interno del modulo ajax), viene visualizzato un avviso (2 secondi prima del previsto), dopo 2 secondi firebug mostra la richiesta-risposta e niente più succede.
Dove mi sbaglio?
Grazie in anticipo, mt
Alcuni codice di esempio, come chiesto correttamente (ho iniziato una nuova soluzione in bianco utilizzando il modello MVC Asp.NET in VS):
vista Home/Indice:
<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();
}
}
Penso che questo sia sufficiente per riprodurre il comportamento. Una vista parziale vuota può essere utilizzata come vista DoLongTask.
post ... il tuo ... codice ....! – womp
Codice aggiunto come richiesto (correttamente)! – ccalboni