开发者

sending Json array failed

开发者 https://www.devze.com 2023-03-02 21:09 出处:网络
I am building a JSON/WCF app and need to send an array of objects back to the server. For some reason it is not accepting the array. Using script manager I can get data fine.

I am building a JSON/WCF app and need to send an array of objects back to the server. For some reason it is not accepting the array. Using script manager I can get data fine.

  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);

I have tried with and without the JSON stringify. The function onPageError is activated and the only error info it produces is "The server method 'SaveCalendar' failed". Yet the breakpoint on the first line of the web method is not activated.

    <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("c开发者_如何转开发alenderItems") = _calenderItems
        HttpContext.Current.Session("selectedMonth") = New Date(_selectedMonth)
        HttpContext.Current.Session("selectedYear") = New Date(_selectedYear)
        Return True
    End Function

Any Ideas?


I've had similar issues working with MVC. I think .NET's deserializer actually expects that the object it is passed will be a JSON object rather than an array (i.e. it should always start with "{" and end with "}". You could:

  1. Create a POCO class to act as your DTO which simply has a List/Array of CalenderItems inside of it, or
  2. Use a more "lenient" deserializer like Newtonsoft's JSON.NET

Of course this second option would only work if you can somehow convince WCF to run the method in the first place. Looking at your code again, though, I'm wondering if your declaring _jsonImages as a double-array of strings might be causing some difficulty.

0

精彩评论

暂无评论...
验证码 换一张
取 消