在我的 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# 日期对象转换为字符串格式并将
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/>"
您需要一个
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);
});