2017-04-14 11 views
2

MVC5 뷰에서 JSON 함수를 호출합니다. JSON 함수는 UserData (문자열) 및 DateTime 객체의 LIST가 정의 된 AvaliableDates 모델을 반환합니다.Ajax 함수가 JSON을 표시하지 않습니다. 날짜 목록 (Mvc5)

내보기는 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)\/"]} 
+0

: 내가 위에서 만들고, each 방법을 사용 parseDate 기능에

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

? 나는 나의 대답을 업데이트했다. –

답변

0

을 반환 밀리 초 형식. 은 문자열 형식으로 C# 날짜 개체를 변환 및 자바 스크립트 Date 객체로 변환 그런 다음 List<String>

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

Avdata 속성을 변경 :

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

을 당신은 \/Date(1491861600000)\/처럼 하나의 날짜를 변환 function 필요 진짜에. 이를 위해 replace 메소드를 사용할 수 있습니다. 당신을 위해 노력하고 있습니다

$.each(data.Avdata, function (i, item) { 
    var row = "UserIDs are: " + data.UserIDs + " Date " + i + " -> " + parseDate(item)+ "<br/>" 
    $('#divshow').append(row); 
});