2011-01-13 21 views
0

Ich benutze das Jquery-Formular-Plugin, um Formulare an meine MVC-Anwendung zu senden. Das Problem ist in meiner Callback- "Erfolg" -Rückruffunktion. In dieser Funktion mache ich 2 Aufrufe an andere Javascript-Funktionen, die ich habe. Einer aktualisiert Teil der Seite und der andere eine Nachricht an den Benutzer auf einem anderen Teil der Seite.Javascript Callback-Funktionen - mehrere Funktionen nicht ausgeführt

Das Problem ist, nur einer von diesen wird ausgeführt. Es ist das, was ich zuerst in der Rückruffunktion angegeben habe. Ich habe versucht, einen Wert von der ersten Funktion explizit zurückzugeben, um zu versuchen, Kontrolle zurück zu der Rückruffunktion zu bekommen und es funktioniert gerade nicht. Ich möchte meine zwei separaten Funktionen nicht loswerden, weil ich diesen Code sehr oft verwende und ich möchte ihn wirklich auf einmal behalten.

Hier ist der Code. (Die Warnung Aussage da drin ist, nur um mich zu beweisen, dass es nicht funktioniert)

function ShowProposedDate_Submit() { 
    // prepare Options Object 
    var options = { 
     dataType: 'json', 
     success: function (responseText) { 
      $("#blankModal").dialog("close"); 
      var ret = RefreshGrid(); //this function will execute but will not return 
      alert(ret); //this statement won't execute 
      PostMessage(responseText.msg); //this function won't execute 



     }, 
     error: function (responseText) { 
      $("#feedback").html(responseText.msg); 
     } 
    }; 

    // pass options to ajaxForm 
    $('#showProposedDate').ajaxForm(options); 
} 

Hier die zusätzliche Funktionen.

function PostMessage(message) { 
    $('.message_wrap').remove(); 
    $("<div></div>)").addClass("message_wrap") 
       .text(message) 
       .prependTo(".grid_20"); 
    KillMessage(); 
} 

function RefreshGrid() { 
    $.get("/workitems/list", function (data) { 
     $("#grid").replaceWith(data); 
     getAvailableActions(0); 
     getMoreDetails(0); 
     ResetCheckbox(); 
     return 0; 
    }); 
} 

Jede dieser Funktionen funktioniert einwandfrei, wenn ich sie in der Reihenfolge zuerst platziere. Irgendeine Idee, warum ich sie beide nicht laufen lassen kann?

Antwort

0

Ich würde vermuten, dass irgendwo ein Fehler auftritt .. Versuchen Sie dies zu bestimmen.

function ShowProposedDate_Submit() { 
    // prepare Options Object 
    var options = { 
     dataType: 'json', 
     success: function (responseText) { 
      $("#blankModal").dialog("close"); 
      try { RefreshGrid(); } catch (err) { alert("Error: " + err); } 
      try { PostMessage(responseText.msg); } catch (err) { alert("Error2: " + err); } 



     }, 
     error: function (responseText) { 
      $("#feedback").html(responseText.msg); 
     } 
    }; 

    // pass options to ajaxForm 
    $('#showProposedDate').ajaxForm(options); 
} 
+0

Ja. Guter Ruf. Das hat geholfen, es aufzuspüren. Beide Funktionen werden jetzt aufgerufen, es sind keine Rückgabewerte erforderlich. – BZink

0

RefreshGrid wird nichts zurückgeben. Die $ .get() - Funktion ist asynchron, so dass sie einen Rückruf registriert und das RefreshGrid von der Funktion zurückkehrt, bevor das .get abgeschlossen ist. Die get-Funktion gibt zu einem späteren Zeitpunkt 0 zurück, wird jedoch nicht in Ihrer Variablen gespeichert.

Verwandte Themen