Я пытался реализовать 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