2

@Html.AntiForgeryToken() を含むフォームに対して行っている ajax 投稿に問題があります。

ajax 経由でフォームを投稿すると、次のクエリ文字列が取得 されます

これをクエリ文字列から削除するにはどうすればよいですか? 標準的な投稿を行う場合、クエリ文字列にはこれが含まれません。

形:

@using (Html.BeginForm("NextQuestion", "Assessment", FormMethod.Post, new { @class = "form-vertical"}))
    {

        @Html.AntiForgeryToken()
        ....
    }

事後機能:

$('form.ajaxForm').on('submit', (function() {
        $("#loadingIndicator").show();
        $.ajax(
            {
                type: "POST",
                url: $('form.ajaxForm').attr("action"),
                data: $('form.ajaxForm').serialize(),
                success:
                    function(result) {
                        $("#loadingIndicator").hide();
                        if (result.redirect) {
                            window.location.href = result.redirect;
                            return;
                        } else {
                            alert(result.ValidationMessage());
                        }
                    },
                error:
                    function(req, status, err) {
                        alert('error');
                        $("#loadingIndicator").hide();
                    },
            });
        return false;
    }));

アクション方法:

 [HttpPost]
 [ValidateAntiForgeryToken]
 public JsonResult NextQuestion(AssessmentModel model)
4

1 に答える 1