【问题标题】:Post array using Form Data to C# WebAPI using AJAX使用表单数据将数组发布到使用 AJAX 的 C# WebAPI
【发布时间】:2020-05-06 11:46:24
【问题描述】:

我想使用 FormData 将包含一些文件的数组发布到 WebAPI,但是它在 Webapi 上显示 [Object%Object]。请帮我解决这个问题。预知。下面是代码sn-p:

        var arr = [];
        var table = $('#tblOptionType');
        var tr = table.find('tbody tr');
        tr.each(function (i, v) {
            if (i != 0) {
                var values = {
                    Options: $(v)[0].cells[0].firstElementChild.value,
                    IsCorrect: $(v)[0].cells[1].firstElementChild.checked,
                };
                arr.push(values);
            }
        });
        formData = new FormData();
        jQuery.each(jQuery('#QuestionImage')[0].files, function (i, file) {
                 formData.append('file-' + i, file);
        });                 
        formData.append("Options", arr);
        $.ajax({
            url: 'http://localhost:56892/api/Admin/Questions/AddQuestion',
            method: "POST",
            data: formData,
            contentType: false,
            processData: false,
            traditional: true,
            success: function (res) {}
            error:function(err){}
        });

这是我在 WebAPI 上收到的字符串:

【问题讨论】:

    标签: javascript c# .net ajax asp.net-web-api


    【解决方案1】:

    您需要设置contentType,这是您要发送的数据类型,因此application/json; charset=utf-8 是常见的,application/x-www-form-urlencoded; charset=UTF-8 也是默认设置:

    $.ajax({
            url: 'http://localhost:56892/api/Admin/Questions/AddQuestion',
            method: "POST",
            data: JSON.stringify(formData),
            contentType: "application/json; charset=utf-8",
            processData: false,
            traditional: true,
            success: function (res) {}
            error:function(err){}
        });
    

    【讨论】:

    猜你喜欢
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 2013-04-09
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    相关资源
    最近更新 更多