Han*_*ana 5 ajax asp.net-mvc form-data
我试图将带有表单数据的数组发送到带有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 () {
}
});
}`
Run Code Online (Sandbox Code Playgroud)
我的行动如下
[HttpPost]
[Authorize]
public ActionResult AppSettings( ApplicationSettingsViewModel AppSettingsView, int[] SelectedLangs)
{
}
Run Code Online (Sandbox Code Playgroud)
有帮助吗?
小智 5
FormData是一组表示表单控件及其值的名称/值对,并发送为multipart/form-data,您不能stringify()和/或使用单独的对象发送它.您需要为其添加名称/值对.
如果元素id="supportedLanguages"在表单内id="frmAppSettings",那么你的代码
var formdata = new FormData($('#frmAppSettings').get(0));
Run Code Online (Sandbox Code Playgroud)
将正确添加<select>到FormData对象的值.如果没有,那么您需要在数组中附加每个值,例如
var formdata = new FormData($('#frmAppSettings').get(0));
$.each($("#supportedLanguages").val(), function(index, item) {
formdata .append('SelectedLangs', item);
});
Run Code Online (Sandbox Code Playgroud)
然后需要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 () {
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2329 次 |
| 最近记录: |