javascript - 如何使用 AntiForgeryToken 将 MVC View 模型传递到 AJAX 调用中

标签 javascript jquery ajax antiforgerytoken

下面的代码对我有用,但我试图找到一种从表单中读取所有值的方法,而不必在 JavaScript 中重新创建 View 模型(vm 是对象参数的名称)。

我尝试序列化表单并将其传入,但也许我的语法不正确。

有什么建议吗?

$.ajax({
    type: "POST",
    dataType: "json",
    url: "/post-details-save",
    data: addAntiForgeryToken({
        vm: ({
            Id: $("#PostImageDetails_Id").val(),
            Title: $("#PostImageDetails_Title").val(),
            Description: $("#PostImageDetails_Description").val(),
            CopyrightOwner: $("#PostImageDetails_CopyrightOwner").val(),
            CopyrightUrl: $("#PostImageDetails_CopyrightUrl").val(),
            SourceName: $("#PostImageDetails_SourceName").val(),
            SourceUrl: $("#PostImageDetails_SourceUrl").val(),
            SourceLicenseType: $("#PostImageDetails_SourceLicenseType").val()
        })
    }),
    success: postDetailsSaveSuccess,
    error: postDetailsSaveError
});

最佳答案

确认表单设置

@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post, new { @id = "formID" }))

我已经在部分 View 中提交表单做了类似的事情。

基本上,您需要确认您的 html 表单设置正确:

AntiForgeryToken

@Html.AntiForgeryToken()

数据字段

可能类似于以下内容,其中名称属性很重要。

<input type="hidden" name="ApproveUserID" id="ApproveUserID" value="@Model.ApproveUserID" />

AJAX 表单

如果您的表单设置正确(如上所述),您将能够使用类似于下面 JS 的内容通过 AJAX 提交数据。

var form = $("#formID");
$.ajax({
    url: form.attr('action'),
    type: form.attr('method'),
    data: form.serialize(), // data to be submitted
    success: function (response) {
        if (response == "Success") {
            //DO SUCCESS STUFF
        } else
        {
            //DO FAILURE STUFF
        }
    },
    error: function () {
            //DO ERROR STUFF
    }
});
<小时/>

专业提示:

您始终可以通过放置来扩展发送的数据

var formData = form.serialize();

进入一个变量并从那里扩展它。

祝你好运。

关于javascript - 如何使用 AntiForgeryToken 将 MVC View 模型传递到 AJAX 调用中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40926281/

相关文章:

javascript - 如何检查我可以向哪个方向移动元素?

javascript - ReactJS 给子组件添加回调函数

javascript - 更改没有标签的复选框背景

javascript - 检查列表项的数量并在条件存在时将其列化

javascript - 删除表行,从总和中减去

jquery - 使用 AJAX 将 JSON 值绑定(bind)到下拉列表

asp.net - 如何在jquery ajax调用中消费webservice的返回值?

javascript - 尝试编写一个小数点后 4 位的正则表达式

javascript - Angularjs 指令替换文本

javascript - 在 MVC 中使用 JQuery Ajax 发布数组导致 500(内部服务器错误)