Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 如何修复';415不支持的媒体错误';关于ajax发送到控制器_Json_Ajax_Asp.net Mvc_Asp.net Core - Fatal编程技术网

Json 如何修复';415不支持的媒体错误';关于ajax发送到控制器

Json 如何修复';415不支持的媒体错误';关于ajax发送到控制器,json,ajax,asp.net-mvc,asp.net-core,Json,Ajax,Asp.net Mvc,Asp.net Core,在控制器的post发生的瞬间,屏幕显示415错误……因此我认为,即使数据以某种方式通过,我的json结构也一定不正确 查看Ajax: function SubAll() { var selectedValues = $('#timesheet').DataTable().column(0).checkboxes.selected().toArray(); var instructions = []; //create array of objects for (var i = 0; i &l

在控制器的post发生的瞬间,屏幕显示415错误……因此我认为,即使数据以某种方式通过,我的json结构也一定不正确

查看Ajax:

function SubAll() {
var selectedValues = 
$('#timesheet').DataTable().column(0).checkboxes.selected().toArray();

var instructions = []; //create array of objects
for (var i = 0; i < selectedValues.length; i++) {
instructions.push({ TimeId: selectedValues[i] });
}

var jsonObject = { MasterIds: instructions };

$.ajax({
url: "/Admin/ApproveAllTimesheets",
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify(jsonObject),
success: function (result) {
console.log(result);
},
error: function (xhr, textStatus) {
if (xhr.status == 401) { alert("Session Expired!"); window.location = 
"/Account"; }
else {
alert('Content load failed!', "info");
}
}
});
};
public IActionResult ApproveAllTimesheets([FromBody]ValueContainer information)
public class ValueContainer
{
    public List<Value> MasterIds { get; set; }
}

public class Value
{
    public Guid TimeId { get; set; }
}
{"MasterIds":[{"TimeId":"ad98749f-9083-464b-aac2-0d685a7de809"}]}
类对象:

function SubAll() {
var selectedValues = 
$('#timesheet').DataTable().column(0).checkboxes.selected().toArray();

var instructions = []; //create array of objects
for (var i = 0; i < selectedValues.length; i++) {
instructions.push({ TimeId: selectedValues[i] });
}

var jsonObject = { MasterIds: instructions };

$.ajax({
url: "/Admin/ApproveAllTimesheets",
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify(jsonObject),
success: function (result) {
console.log(result);
},
error: function (xhr, textStatus) {
if (xhr.status == 401) { alert("Session Expired!"); window.location = 
"/Account"; }
else {
alert('Content load failed!', "info");
}
}
});
};
public IActionResult ApproveAllTimesheets([FromBody]ValueContainer information)
public class ValueContainer
{
    public List<Value> MasterIds { get; set; }
}

public class Value
{
    public Guid TimeId { get; set; }
}
{"MasterIds":[{"TimeId":"ad98749f-9083-464b-aac2-0d685a7de809"}]}
更新#1

事实证明,修复是我调用函数的方式。我没有使用按钮onclick=“SubAll()”,而是用一个简单的、使用jQuery来截获click事件,阻止它,然后调用函数……现在没有415错误

查看按钮

<button id="ApproveAll" class="btn btn-success">Approve All</button>
批准所有
查看jQuery

 $(document).ready(function () {
        timesheet = $('#timesheet').DataTable({
            responsive: {
                details: {
                    renderer: function (api, rowIdx, columns) {
                        var data = $.map(columns, function (col, i) {
                            return col.hidden ?
                                '<tr data-dt-row="' + col.rowIndex + '" 
data-dt-column="' + col.columnIndex + '">' +
                                '<td>' + col.title + ':' + '</td> ' +
                                '<td>' + col.data + '</td>' +
                                '</tr>' :
                                '';
                        }).join('');

                        return data ?
                            $('<table/>').append(data) :
                            false;
                    }
                }
            },
            columnDefs: [
            {
                targets: 0,
                orderable: false,
                searchable: false,
                checkboxes: true
            },
            {
                targets: 5,
                visible: false
            },
            {
                targets: 6,
                visible: false
            }
            ],
            order: [
                [1, 'asc']
            ]
        });

        $('#ApproveAll').on('click',
            function (e) {
                var selectedValues = 
$('#timesheet').DataTable().column(0).checkboxes.selected().toArray();
                var instructions = []; //create array of objects
                for (var i = 0; i < selectedValues.length; i++) {
                    instructions.push(selectedValues[i]);
                }

                var jsonObject = { MasterIds: instructions };

                $.ajax({
                    url: "/Admin/ApproveAllTimesheets",
                    type: "POST",
                    contentType: "application/json;charset=utf-8",
                    data: JSON.stringify(jsonObject),
                    traditional: true,
                    statusCode: {
                        415: function () {
                            Response.redirect("/Admin/Index");
                        }
                    },
                    success: function (result) {
                        console.log(result);
                    },
                    error: function (xhr, textStatus, errorThrown) {
                        if (xhr.status == 401) { alert("Session 
Expired!"); window.location = "/Account"; }
                        else {
                            alert('Content load failed!', "info");
                        }
                    }
                });
                e.preventDefault();
            });
    });
$(文档).ready(函数(){
时间表=$(“#时间表”)。数据表({
响应:{
详情:{
渲染器:函数(api、rowIdx、列){
变量数据=$.map(列,函数(列,i){
返回隐藏上校?
'' +
“+col.title+”:“+”+
''+列数据+''+
'' :
'';
}).加入(“”);
返回数据?
$('')。附加(数据):
虚假的;
}
}
},
columnDefs:[
{
目标:0,
可订购:错误,
可搜索:false,
复选框:正确
},
{
目标:5,
可见:假
},
{
目标:6,
可见:假
}
],
订单:[
[1,‘asc’]
]
});
$(#ApproveAll')。在('单击'),
职能(e){
var selectedValues=
$(“#时间表”).DataTable().column(0).复选框.selected().toArray();
var指令=[];//创建对象数组
对于(变量i=0;i
我想你可以看到。你能和我们分享你的控制器吗?#1)这个链接是针对google-gson-2.2.4 json库的……我正在使用Newtonsoft.json库#2) 我的控制器逻辑并不重要,因为415会立即发生……只要输入方法,我就在空字符串声明上有一个断点。不,415字面上意味着操作不接受提交的特定内容类型(即应用程序/json)。它甚至不费事去解析它,所以JSON在语法上是否正确在这一点上是无关紧要的。现在,奇怪的是JSON是开箱即用的,所以您在Startup.cs中对输入/输出格式化程序进行了自定义吗?我没有自定义格式化程序。我对内容类型也有同样的怀疑…我将模型改为Value[]而不是List…仍然得到415,数据仍然流向方法。我想你可以看到。你能和我们分享你的控制器吗?#1)这个链接是针对google-gson-2.2.4 json库的……我正在使用Newtonsoft.json库#2) 我的控制器逻辑并不重要,因为415会立即发生……只要输入方法,我就在空字符串声明上有一个断点。不,415字面上意味着操作不接受提交的特定内容类型(即应用程序/json)。它甚至不费事去解析它,所以JSON在语法上是否正确在这一点上是无关紧要的。现在,奇怪的是JSON是开箱即用的,所以您在Startup.cs中对输入/输出格式化程序进行了自定义吗?我没有自定义格式化程序。我对内容类型也有同样的怀疑…我将模型改为Value[]而不是List…仍然得到415,数据仍然流向该方法。