2011-01-13 26 views
0

jqueryフォームプラグインを使用してフォームをMVCアプリケーションに送信しています。問題は私のコールバック "成功"コールバック関数です。この関数では、私が持っている他のjavascript関数を2回呼び出します。 1つはページの一部を更新し、もう1つはページの別の部分にユーザーにメッセージを投稿します。javascriptコールバック関数 - 複数の関数が実行されない

問題は、これらのうちの1つだけが実行されることです。それは私が最初にコールバック関数に入れたものです。コールバック関数に制御を戻そうとするために、最初の関数から明示的に値を返そうとしましたが、それは機能していません。私はこのコードをたくさん使うので、私は2つの別々の機能を取り除きたいとは思っていません。

ここにコードがあります。 (アラート・ステートメントは、それが機能していないことを私に証明するためのものです)

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

ここでは、追加機能について説明します。

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

これらの各機能は、最初に配置すると完全に機能します。なぜ私はそれらの両方を実行することができません任意のアイデア?

答えて

0

どこかでエラーが発生していると思います。これを調べてみてください。

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

はい。いいですよ。それはそれを追跡するのに役立ちました。どちらの関数も現在呼び出されており、戻り値は必要ありません。 – BZink

0

RefreshGridは何も返しません。 $ .get()関数は非同期なので、コールバックを登録していて、.getが完了する前に関数からRefreshGridが返ってきています。 get関数は後で0を返しますが、変数には格納されません。

関連する問題