【问题标题】:Sending array of Json data along with image file with ajax in asp.net mvc在asp.net mvc中使用ajax发送Json数据数组以及图像文件
【发布时间】:2016-01-20 11:30:03
【问题描述】:

我正在尝试使用 ajax 发送 json 数据和图像文件数组,但我只能获取图像文件而没有获取 json 数据,但我可以看到在 fiddler 中正确发送的 json 数据。在操作方法中,json 数据的收集参数说计数= 0。如何获取 json 数据数组?

@using (Ajax.BeginForm("GetData", "Home", new AjaxOptions
{
    InsertionMode = InsertionMode.Replace
}, new { @id = "form_", enctype = "multipart/form-data" }))
{
    @Html.TextBox("imagefile", null, new { @type="file"})
    @Html.Hidden("formdata", null, new { @data_formdatajson = "" }))
    @Html.TextBox("submit", null, new { @id = "button", @value = "upload", @type = "submit"})
}

    var DataClass = {
            data1: data1value,
            data2: data2value
        }

dataArray=[];
dataArray.push(DataClass);
dataArrayJson = JSON.stringify(dataArray);
$('#formdata’).data("formdatajson ", dataArrayJson);

           $('#form_').on('submit', function (e) {
                var dataArray_ = $('#formdata ').data("formdatajson");
                var formdata = new FormData($(this)[0]);
                formdata.append('formdata', dataArray_);
                        $.ajax({
                            url: '/GetData/Home/',
                            type: 'POST',
                            data: formdata,
                            processData: false,
                            contentType: false,
                            dataType: "json",
                            success: function (data) {
                            },
                            error: function () { },
                        });
                    });
public class DataClass
{
     public string data1 { get; set; }
        public string data2 { get; set; }
}

        [HttpPost]
        public JsonResult GetData(IEnumerable<DataClass> formdata, HttpPostedFileBase imagefile)
        {
                    return Json(new { success = true },  JsonRequestBehavior.AllowGet);
        }

【问题讨论】:

  • 你应该使用formdata.append('formdata', dataArray_);而不是formdata.append('dataarray', dataArray_);
  • 不,这没有帮助:(
  • 您是否尝试过将contentType 设置为"application/json" 而不是false
  • @stephen.vakil 是的,我试过了......我收到错误 500。

标签: jquery json ajax asp.net-mvc


【解决方案1】:

我解决了这个问题...我不知道为什么,但是 Asp.Mvc 获取 json 数据并无缘无故地在 json 数组之外添加一个空元素。我使用 request.form 来获取 json,我消除了这些额外的数据使用子字符串。现在它可以工作了。

【讨论】:

    猜你喜欢
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 2020-02-08
    • 1970-01-01
    相关资源
    最近更新 更多