2
function CreateModalDialogWindow(urlPath) {
$.ajax({
    url: '@Url.Action("Popup","Project")',
    type: 'POST',
    async: false,
    success: function (data) {
        debugger;
        $('#dialog').html(data).dialog({
            autoOpen: true,
            width: 400,
            resizable: false,
            modal: true
        });
    },
    error: function(){
       alert('Error!');
    }
});

return false;

}

ajax post を使って actionmethod を呼び出したいと思っていました。アクションメソッドはこちら

 [HttpPost]
    public PartialViewResult Popup()
    {
        return PartialView("~/Views/Shared/Project/Popup.cshtml");
    }

上記のコードのどこが間違っているか教えてください。

4

1 に答える 1

3

アクション メソッドが呼び出されない理由はさまざまです。

  • あなたはいくつかのJavaScriptエラーがあります
  • CreateModalDialogWindow関数を呼び出すことはありません
  • リンクまたはフォーム送信のクリックでを呼び出しましたCreateModalDialogWindowが、false を返してこのボタンのデフォルト アクションをキャンセルするのを忘れていました。

したがって、最初にドキュメントでこのコードを呼び出して、動作するかどうかを確認することから始めます。

<script type="text/javascript">
$(function() {
    $.ajax({
        url: '@Url.Action("Popup", "Project")',
        type: 'POST',
        success: function (data) {
            $('#dialog').html(data).dialog({
                autoOpen: true,
                width: 400,
                resizable: false,
                modal: true
            });
        }
    });
});
</script>

コントローラ アクションにブレークポイントを設定すると、通常はヒットするはずです。FireBug などの JavaScript デバッグ ツールを使用することをお勧めします。これは、考えられる JavaScript エラーを確認し、AJAX リクエスト中に送信される正確なリクエスト/レスポンスを確認するのに役立ちます。

また、スイッチを削除したことにも気付くでしょうasync: false。これは、サーバーへの同期呼び出しを行い、この要求の実行中に Web ブラウザーをフリーズさせ、AJAX を実行しなくなるためです。

于 2012-04-20T06:50:49.407 に答える