C# 使用IE时AJAX发送空数据

C# 使用IE时AJAX发送空数据,c#,jquery,ajax,asp.net-mvc-4,C#,Jquery,Ajax,Asp.net Mvc 4,当我使用AJAX请求将数据发送到IE控制器时,它发送的是空数据。当我使用Chrome或Firefox时,来自键/值对的数据存在于控制器的参数变量中 下面是我的javascript函数: $(".input-group.date").datepicker({ autoclose: true }).on('changeDate', function (ev) { var schoolId = $(this).attr('data-schoolId'

当我使用AJAX请求将数据发送到IE控制器时,它发送的是空数据。当我使用Chrome或Firefox时,来自键/值对的数据存在于控制器的参数变量中

下面是我的javascript函数:

    $(".input-group.date").datepicker({
        autoclose: true
    }).on('changeDate', function (ev) {


        var schoolId = $(this).attr('data-schoolId');
        var date = new Date(ev.date).toUTCString();
        var schoolName = $(this).attr('data-schoolName');

        $.ajax({
            url: "@Url.Action("ChangeFulfillmentDate", "Admin")",
            type: "POST",
            data: {
                'newDate': date,
                'schoolId': schoolId
            },
            success: function (data) {
                if (!data.success) {
                    var n = noty({
                        text: 'Hold up! Something went wrong...<br />' + data.message,
                        layout: 'top',
                        type: 'error',
                        killer: true,
                        closeWith: ['button']
                    });
                }
                else {
                    var n = noty({
                        text: 'Fulfillment date for ' + schoolName + ' updated successfully',
                        layout: 'bottomRight',
                        type: 'success',
                        timeout: 3000,
                        killer: true,
                        closeWith: ['hover']
                    });
                }
            },
            error: function (xhr, status, error) {
                var n = noty({
                    text: 'Hold up! Something went wrong...<br />' + xhr.responseText,
                    layout: 'top',
                    type: 'error',
                    killer: true,
                    closeWith: ['button']
                });
            }
        });
    });
参数名称:参数


为什么我的AJAX调用没有为键/值对发送正确的值?我已经确定这些javascript变量中有数据,因为它可以在Chrome和Firefox中工作。

正如前面所评论的,您的问题在于日期。JSon在日期方面非常怪异,不允许您在定期发送数据时发送它。为了使其正常工作,您需要执行以下操作:

var mydate=dateFormat(您的日期,“mm/dd/yyyy HH:mm:ss”)


您可以阅读更多关于它的信息(有点旧了,但是很好用)

在IE中调试这一行。
var date=new date(ev.date).toutString()您的问题可能与ajax无关。最有可能的是IE没有将
ev.date
识别为日期字符串。我想不是这样的。“date”变量填充的数据类似于“2014年6月17日星期二00:00:00 UTC”。这是有效的。谢谢你的帮助。我真的很感激链接到解释为什么会发生这种情况,而不仅仅是告诉我如何修复它。这不是最直观的错误。我曾经看到,如果您以前构造的数据键/值对错误,AJAX会发送空数据,而这正是我所认为的,因为我的“日期”中有数据。我永远不会猜到'date'变量中的数据是无效的。
The parameters dictionary contains a null entry for parameter 'newDate' of non-nullable type 'System.DateTime' for method 'System.Web.Mvc.JsonResult ChangeFulfillmentDate(System.DateTime, Int32)' in 'CurrReplenishment.Controllers.AdminController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.