gpt4 book ai didi

ajax - 如何在ajax请求中将带有formdata的数组发送到mvc Action

转载 作者:行者123 更新时间:2023-12-04 18:59:49 26 4
gpt4 key购买 nike

我试图将带有表单数据的数组发送到带有 Ajax 请求的操作,但是每当我这样做时,我都会收到表单数据和数组为空

$scope.SubmitForm = function () {
var sLangs = $("#supportedLanguages").data("kendoMultiSelect").value();

var formdata = new FormData($('#frmAppSettings').get(0));

alert(formdata.SelectedLanguages);

var data = new FormData(document.getElementById("frmAppSettings"));
$.ajax({
type: "POST",
url: "/AppMenuMaker/AppSettings",
data: JSON.stringify({ AppSettingsView: formdata, SelectedLangs: sLangs }),
processData: false,
contentType: false,
success: function () {

}
});
}`

我的行动如下
    [HttpPost]
[Authorize]
public ActionResult AppSettings( ApplicationSettingsViewModel AppSettingsView, int[] SelectedLangs)
{

}

有什么帮助吗?

最佳答案

FormData是一组表示表单控件及其值的名称/值对,并作为 multipart/form-data 发送, 你不能 stringify()它和/或与单独的对象一起发送。您需要向其附加名称/值对。

如果元素带有 id="supportedLanguages"在带有 id="frmAppSettings" 的表单内,那么你的代码

var formdata = new FormData($('#frmAppSettings').get(0));

将正确添加 <select> 的值到 FormData目的。如果没有,那么您需要附加数组中的每个值,例如
var formdata = new FormData($('#frmAppSettings').get(0));
$.each($("#supportedLanguages").val(), function(index, item) {
formdata .append('SelectedLangs', item);
});

然后ajax选项需要是
$.ajax({
type: "POST",
url: '@Url.Action("AppSettings", "AppMenuMaker")', // use @Url.Action() to generate your url's
data: formdata,
processData: false,
contentType: false,
success: function () {
}
});

关于ajax - 如何在ajax请求中将带有formdata的数组发送到mvc Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40329929/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com