Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.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
Javascript jQuery post不会将数据发布到ASP.NET API控制器_Javascript_C#_Jquery_Asp.net_Asp.net Mvc - Fatal编程技术网

Javascript jQuery post不会将数据发布到ASP.NET API控制器

Javascript jQuery post不会将数据发布到ASP.NET API控制器,javascript,c#,jquery,asp.net,asp.net-mvc,Javascript,C#,Jquery,Asp.net,Asp.net Mvc,我做了一个噩梦:通过jquery post将数据发送到ASP.NET控制器。这就是JSON.stringify之后数据的外观: [{"scheduleTaskID":"203","task":"Permit","baselineDate":"4/6/2005 8:00:00 AM","scheduledDate":"4/6/2005 8:00:00 AM","actualDate":"4/6/2005 8:00:00 AM","finishedDate":"","selected":"on"},

我做了一个噩梦:通过jquery post将数据发送到ASP.NET控制器。这就是JSON.stringify之后数据的外观:

[{"scheduleTaskID":"203","task":"Permit","baselineDate":"4/6/2005 8:00:00 AM","scheduledDate":"4/6/2005 8:00:00 AM","actualDate":"4/6/2005 8:00:00 AM","finishedDate":"","selected":"on"},{"scheduleTaskID":"195","task":"Office Files","baselineDate":"7/13/2005 8:00:00 AM","scheduledDate":"7/13/2005 8:00:00 AM","actualDate":"7/13/2005 8:00:00 AM","finishedDate":"","selected":"on"},{"scheduleTaskID":"196","task":"Foundation","baselineDate":"7/27/2005 8:00:00 AM","scheduledDate":"7/27/2005 8:00:00 AM","actualDate":"8/13/2005 8:00:00 AM","finishedDate":"","selected":"on"},{"scheduleTaskID":"197","task":"Framing","baselineDate":"8/5/2005 8:00:00 AM","scheduledDate":"8/5/2005 8:00:00 AM","actualDate":"8/23/2005 8:00:00 AM","finishedDate":"","selected":"on"},{"scheduleTaskID":"198","task":"Finishes Exterior","baselineDate":"8/26/2005 8:00:00 AM","scheduledDate":"8/26/2005 8:00:00 AM","actualDate":"9/14/2005 8:00:00 AM","finishedDate":"","selected":"on"},{"scheduleTaskID":"199","task":"Drywall","baselineDate":"9/2/2005 8:00:00 AM","scheduledDate":"9/2/2005 8:00:00 AM","actualDate":"9/16/2005 8:00:00 AM","finishedDate":"","selected":"on"},{"scheduleTaskID":"200","task":"Flooring","baselineDate":"9/1/2005 8:00:00 AM","scheduledDate":"9/1/2005 8:00:00 AM","actualDate":"9/20/2005 8:00:00 AM","finishedDate":"","selected":"on"},{"scheduleTaskID":"201","task":"General Finish","baselineDate":"9/12/2005 8:00:00 AM","scheduledDate":"9/12/2005 8:00:00 AM","actualDate":"","finishedDate":"","selected":"on"},{"scheduleTaskID":"202","task":"Final PDI","baselineDate":"10/11/2005 8:00:00 AM","scheduledDate":"10/11/2005 8:00:00 AM","actualDate":"","finishedDate":"","selected":"on"},{"scheduleTaskID":"203","task":"Permit","baselineDate":"4/6/2005 8:00:00 AM","scheduledDate":"4/6/2005 8:00:00 AM","actualDate":"4/6/2005 8:00:00 AM","finishedDate":"","selected":"on"},{}]
这就是我试图传递数据的方式:

$.post("/api/update/", JSON.stringify( array ), alert('success'), 'json');
这是我的ASP.NET API控制器:

[HttpPost]
        public dynamic Post(List<CellModel> cells)
        {
        }
当我在
公共动态Post(列出单元格)
之后在控制器中放置断点时,它表示单元格为
单元格计数=0
…我放置
返回false
在我的post呼叫查看网络呼叫后,它显示状态代码为301永久移动:

这就是我获取这些数据的方式:

$("#form").submit(function (event) {
            var array = [];
            $('#form > table > tbody  > tr').each(function (elem) {
                var item = {
                    scheduleTaskID: $(this).find("td > #scheduleTaskID").val(),
                    task: $(this).find("td > #task").val(),
                    baselineDate: $(this).find("td > #baselineDate").val(),
                    scheduledDate: $(this).find("td > #scheduledDate").val(),
                    actualDate: $(this).find("td > #actualDate").val(),
                    finishedDate: $(this).find("td > #finishedDate").val(),
                    selected: $(this).find("td > #selected").val(),
                };
                array.push(item);
            });

            $.post("/api/update/", JSON.stringify(array), alert('success'), 'json');
            return false;

        });

POST
将直接向上的JSON数组绑定到MVC控制器不起作用。解决方案是使用长格式AJAX jQuery方法,包括
traditional:true
选项,并以不同的方式构造JSON数据和模型-请参阅


关于模型:控制器操作的参数不应该是数组-它应该是一个包含和数组成员的模型类-当然,JSON应该镜像这个结构。

根据发布的代码,您发布的URL是
update
,但端点是
Post
。另外,看起来好像有多个元素具有相同的id。这在HTML中是一件坏事。是的,多个元素具有相同的id,我需要以这种方式传递它。我也不明白如何调用Post方法。看起来数据应该发布到“update”方法…它是一个api控制器,所以url应该看起来像/api//I如果将方法名放入或取出,则得到相同的结果。控制程序称为UpdateControl…url>NETWebAPI中应该只有更新才可以使用crud的神奇词汇。如果该方法以动词开头,则认为动词publictask Post(Object-Object)是Post
$("#form").submit(function (event) {
            var array = [];
            $('#form > table > tbody  > tr').each(function (elem) {
                var item = {
                    scheduleTaskID: $(this).find("td > #scheduleTaskID").val(),
                    task: $(this).find("td > #task").val(),
                    baselineDate: $(this).find("td > #baselineDate").val(),
                    scheduledDate: $(this).find("td > #scheduledDate").val(),
                    actualDate: $(this).find("td > #actualDate").val(),
                    finishedDate: $(this).find("td > #finishedDate").val(),
                    selected: $(this).find("td > #selected").val(),
                };
                array.push(item);
            });

            $.post("/api/update/", JSON.stringify(array), alert('success'), 'json');
            return false;

        });