Asp.NET MVC AjaxOptions OnSuccess feuert.. zu früh?

Ich würde gerne die OnSuccess Möglichkeit, AjaxOptions vergangen, als Ajax.BeginForm argument "etwas tun", sobald die Antwort vollständig empfangen wurde und das DOM aktualisiert. Soweit ich undestand von MSDN, das ist, was diese option tut.

In meiner Anwendung, OnSuccess script feuert zu früh, sofort nach dem die Anfrage gesendet wird. Ich schlafen den thread für eine Weile, um besser zu sehen, das Ergebnis. Ich soll zu sehen, die OnSuccess-Skript (eine Warnung) ausgelöst, nachdem der Schlaf die Zeit, sagen wir 2 Sekunden. Ich verwende Firebug um zu sehen, was passiert unter der Haube, und alles, was ich sehe, ist: ich klicke auf den button (submit in der ajax-form), Warnmeldung (2 Sekunden vor dem erwarteten), nach 2 Sekunden firebug zeigt die Anfrage-Antwort und nichts passiert mehr.

Wo bin ich falsch?

Vielen Dank im Voraus,
mt

Einige Beispiel-code, wie richtig gefragt (ich begann eine leere neue Lösung mit Asp.NET MVC template in VS):

Home/Index view:

<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();
    }
}

Ich denke, das ist genug, um das Verhalten zu reproduzieren. Eine leere partielle view verwendet werden kann, wie DoLongTask anzeigen.

post......code....!
Code Hinzugefügt, wie (richtig) gefragt!

InformationsquelleAutor ccalboni | 2009-07-29

Schreibe einen Kommentar