Ajax 函数不显示 JSON 日期列表 (Mvc5)

问题描述 投票:0回答:2

在我的 MVC5 视图中,我正在调用 JSON 函数。 JSON 函数返回一个可用日期模型,其中定义了一个 Userld(string) 和一个 DateTime 对象列表。

我的视图只能读取 Userld,但 DateTime 对象显示为“未定义”。 谁能明白为什么我在视图中没有获得 JSON DateTime LIST 值?

我的 JSON 函数:

public JsonResult GetFreeAppointmentDays()
{
 List<DateTime> avaliableBookingDays = new List<DateTime>();

 DateTime x1 = new DateTime(2017, 04, 11, 0, 0, 0);
 DateTime x2 = new DateTime(2017, 04, 12, 0, 0, 0);

 avaliableBookingDays.Add(x1.Date);
 avaliableBookingDays.Add(x2.Date);

 useravaliableDates AvaliableDates = new useravaliableDates()
 {
    UserIDs = "4,5,2,0,0,0,2",
    Avdata = avaliableBookingDays    
 };

 return Json(AvaliableDates, JsonRequestBehavior.AllowGet);
}

这是我的视图,带有 AJAX 调用:

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <input type="text" id="txtName" />
    <input type="button" id="btnGet" value="Get Current Time" />
    <div id="divshow"/>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $("#btnGet").click(function () {
                $.ajax({
                    type: "POST",
                    url: "/Home/GetFreeAppointmentDays",
                    dataType: "json",
                    success: function (data) {
                       
                        $('#divshow').append(data);
                        var items = '';
                        $.each(data.Avdata, function (i, item) {
                            var row = "UserIDs are: " + data.UserIDs + "  Date " + i + " -> " + item[i].Date + "<br/>"
                         
                            $('#divshow').append(row);
                        });
                    },
                    failure: function (response) {
                        alert(response.responseText);
                    },
                    error: function (response) {
                        alert(response.responseText);
                    }
                });
            });
        });
    </script>
</body>
</html>

奇怪:我的 JSON 函数返回这个

{"UserIDs":"4,5,2,0,0,0,2","Avdata":["\/Date(1491861600000)\/","\/Date(1491948000000)\/","\/Date(1492034400000)\/","\/Date(1492207200000)\/","\/Date(1492466400000)\/"]}
c# json asp.net-mvc asp.net-mvc-4 asp.net-ajax
2个回答
0
投票

您正在获取毫秒格式的日期。 将 C# 日期对象转换为字符串格式并将

Avdata
属性更改为
List<String>

avaliableBookingDays.Add(x1.ToString("yyyy-MM-ddTHH:mm:ss"));
avaliableBookingDays.Add(x2.ToString("yyyy-MM-ddTHH:mm:ss"));

然后将其转换为javascript日期对象:

var row = "UserIDs are: " + data.UserIDs + "  Date " + i + " -> " + new Date(item); + "<br/>" 

0
投票

您需要一个

function
来将
\/Date(1491861600000)\/
等日期转换为真实日期。为此,您可以使用
replace
方法。

function parseDate(value){
   var newDate=new Date(parseInt(value.replace("/Date(", "").replace(")/",""), 10));
   return newDate.getDate()+'/'(newDate.getMonth()+1)+'/'+newDate.getFullYear()
}

在您的

each
方法中使用我在上面创建的
parseDate
函数:

$.each(data.Avdata, function (i, item) {
    var row = "UserIDs are: " + data.UserIDs + "  Date " + i + " -> " + parseDate(item)+ "<br/>"
    $('#divshow').append(row);
});
© www.soinside.com 2019 - 2024. All rights reserved.