0

ページにカレンダーの予定表があります。テーブルは、まだ承認されていないすべての予定です。

管理者は会議をスケジュールする前に会議を承認する必要があるため、テーブルには「承認」リンクがあります。「承認」をクリックすると、予定の「承認済み」フィールドを true に設定する ajax メソッドが呼び出されます。その後、js は行を削除してテーブルを再構築し、予定がテーブルに存在しないことを確認するためにページ全体を更新する必要がないようにします。

私の問題は、その時点でまだ予定がない場合にのみ、ajax メソッドが予定を承認することです。競合がある場合、予定は未承認のままにする必要があります (x.approved = false)。

これは正常に機能しますが、ajax メソッドは RedirectToAction をテーブルのあるページに戻すだけで、JavaScript は引き続き行を削除します。ページを更新すると、予定がまだ承認されていないため、行が返されます。

RedirectToAction を返し、ブール値も返す方法はありますか? 行削除 JavaScript が (wasApproved == true) の場合にのみ実行されるように、javascript 変数 (つまり、wasApproved) を変更することは可能ですか? ajaxメソッドは常に実行に成功する必要があるため、今はajaxの成功関数を使用するのに適切な時期ではないと思います。

4

1 に答える 1

0

次のようなものを試してください。

コントローラで、Jsonの結果を提供します。

[HttpPost]
public ActionResult Aprove(int id) 
{
    /* process database changes*/
    return Json(new { success = true}, JsonRequestBehavior.AllowGet);
}

そして、クライアント側では、jqueryでアクセスし、この結果をjsonオブジェクトとして読み取ります。必要に応じて、行を削除するか、リダイレクトを他のURLに変更できます。何かのようなもの:

$(document).ready(function() {  
    $("a.aprove").click(function() {
        var id = /* provide an id to pass as a parameter.. could be on the 'rel' property of a tag. */
        $.ajax({
          type: 'POST',
          url: "Controller/Aprove",
          data: { id : id },
          success: function (data) {
                if (data.success) 
                {
                                    // remove the tr row...
                    $(this).closest("tr").remove(); 
                                    // or reload the page with 
                                    // document.location.reload(true);
                }           
          },
          dataType: 'json'
        });         
    });
);
于 2012-12-13T16:32:46.400 に答える