2011-05-05 6 views
1

JSON/WCF 앱을 만들고 서버에 개체 배열을 다시 보내야합니다. 어떤 이유로 그것은 배열을 받아들이지 않습니다. 스크립트 관리자를 사용하면 데이터를 올바르게 얻을 수 있습니다.Json 배열을 보내지 못했습니다.

var month = $("#ddlStartMonth").val(); 
      var year = $("#ddlStartYear").val(); 
      var items = JSON.stringify(calendarItems); 
      WebService.SaveCalendar(items, new Date(year, month, 01).toDateString(), new Date(year, month, 01).toDateString(), Submit, onPageError); 

JSON 문자열을 사용하거나 사용하지 않고 시도했습니다. onPageError 함수가 활성화되고 생성되는 오류 정보는 "서버 메서드 'SaveCalendar'가 실패했습니다." 그러나 웹 메서드의 첫 번째 줄에 중단 점이 활성화되어 있지 않습니다.

<OperationContract()> 
<WebGet(ResponseFormat:=WebMessageFormat.Json, BodyStyle:=WebMessageBodyStyle.WrappedRequest)> 
<WebMethod(EnableSession:=True)> 
    Public Function SaveCalendar(ByVal _jsonImages As String()(), ByVal _selectedMonth As String, ByVal _selectedYear As String) As Boolean 
     Dim _calenderItems As New List(Of CalenderItem) 
     '_calenderItems = New JavaScriptSerializer().Deserialize(Of List(Of CalenderItem))(_jsonImages) 
     HttpContext.Current.Session("calenderItems") = _calenderItems 
     HttpContext.Current.Session("selectedMonth") = New Date(_selectedMonth) 
     HttpContext.Current.Session("selectedYear") = New Date(_selectedYear) 
     Return True 
    End Function 

어떤 아이디어?

+0

btw wcf 서비스에서 반환하는 상태 코드는 400 – cja100

답변

1

MVC와 비슷한 문제가 발생했습니다. . 나는 .NET의 디시리얼라이저가 실제로 전달되는 객체가 JSON 객체 오히려보다는 배열 (즉, 항상 당신은 할 수 있었다 "{"로 끝 "}"로 시작해야 될 것으로 기대하고 생각 :

  1. 는 단순히 내부 CalenderItems의 목록/배열을 가지고 DTO, 또는
  2. 사용 물론 Newtonsoft의 JSON.NET

이 두 번째 같은 더 "관대 한"디시리얼라이저 역할을하는 POCO 클래스 만들기 옵션은 WCF가 어떻게 든 나를 설득하도록 설득 할 수있는 경우에만 작동합니다. 처음에는 thod. 그래도 코드를 다시 살펴보면 _jsonImages를 문자열의 이중 배열로 선언하는 것이 다소 어려울 수 있는지 궁금합니다.

+0

입니다. 왜냐하면 JSON.NET이 이전에 이런 문제를 해결하는 데 도움이 되었기 때문입니다. –

+0

먼저 배열이 아닌 문자열로 _jsonImages를 선언 해 보았습니다. 이 솔루션들도 작동하지 않으며 "{"과 "}"로 끝내려고했지만 아무런 효과가 없었습니다. – cja100

+0

객체 배열 대신 하나의 객체를 보내 주시면 작동합니다. – cja100

관련 문제