.NET Serialization и weekcalendar - неопределенные события. События - PullRequest
0 голосов
/ 13 октября 2011

Я пытался реализовать jQuery weekcalendar , используя .net.То, что я не могу понять, это то, почему weekcalendar заявляет, что events.events не определен после того, как я сделаю ajax-вызов к созданному мной веб-методу, который возвращает JSON.

Ниже приведен соответствующий код:

Javascript:

function getEventData() {
    var dataSource = $('#ddlAdvisors').val();

    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        data: "{ AdvisorID: '" + $('#ddlAdvisors').val() + "'}",
        url: "<page>.aspx/<webmethod>",
        dataType: "json",
        success: function (data) {
            var jsonObj = $.parseJSON(data.d);

            // Fixes datetime

            $.each(jsonObj.events, function (key, value) {
                value.start = eval(value.start.slice(1, -1))
                value.end = eval(value.end.slice(1, -1))
            });

        return jsonObj;
        }
    });
}

JSON непосредственно из веб-метода (также, если вы просматриваете эту дату, прежде чем комментировать, прочитайте приведенный выше javascript, который исправляет ее)

d = { "events" : [{
        "id":68263,
        "start":"\/Date(1262619000000)\/",
        "end":"\/Date(1262622600000)\/",
        "comment":"..comment..",
        "title":"First Name Last Name"
    }]
}

WebMethod

<WebMethod()> _
Public Shared Function <name>(ByVal AdvisorID As String) As String

    Dim lookup As New <namespace>.<class>
    Dim dt As New DataTable
    dt = lookup.<function>(Convert.ToInt16(AdvisorID))

    Dim serializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer()

    Dim events As New Generic.Dictionary(Of String, Generic.Dictionary(Of String, List(Of Generic.Dictionary(Of String, Object))))
    Dim rows As New List(Of Dictionary(Of String, Object))
    Dim row As Dictionary(Of String, Object)

    For Each dr As DataRow In dt.Rows
        row = New Dictionary(Of String, Object)
        For Each col As DataColumn In dt.Columns
            row.Add(col.ColumnName, dr(col))
        Next
        rows.Add(row)
    Next

    member.Add("events", rows)
    events.Add("events", member)

    Return serializer.Serialize(member)

End Function

1 Ответ

0 голосов
/ 13 октября 2011

Член success в вашем вызове $.ajax является анонимной функцией. Он выполняется как обратный вызов асинхронного запроса и не возвращает jsonObj вызывающей стороне getEventData().. Вместо этого вам нужно либо вызвать функцию для использования jsonObj, либо обработать объект там, то есть:

success: function (data) {

    ...

    ProcessEventData(jsonObj);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...