我通过JSON将数据传递给我的FullCalendar实现。
我的Feed看起来不错,但由于某种原因,日历不会显示任何数据。
以下是我的JSON Feed的示例:
[{
"title":"Resourse for Paths ",
"start":"2011-11-08T07:30:00Z",
"end":"2011-11-08T10:30:00Z",
"allDay":false
}]
根据FullCalendar手册,一切看起来都不错,但我根本没有数据。
有没有人看到我不知道的任何事情?
以下是生成Feed的代码:
Private Function makejsonoftable(ByVal table As DataTable, ByVal e As makejson) As String
Dim sb As New StringBuilder()
Dim cultureName As String = "en-US"
Dim culture As CultureInfo = New CultureInfo(cultureName)
Dim fieldvalue As String
For Each dr As DataRow In table.Rows
If sb.Length <> 0 Then
sb.Append(",")
End If
sb.Append("{")
Dim sb2 As New StringBuilder()
For Each col As DataColumn In table.Columns
Dim fieldname As String = col.ColumnName
If TypeOf (dr(fieldname)) Is Boolean Then
fieldvalue = Convert.ToBoolean(dr(fieldname))
Else
If TypeOf (dr(fieldname)) Is DateTime Then
fieldvalue = Convert.ToDateTime(dr(fieldname))
Else
fieldvalue = dr(fieldname).ToString()
End If
End If
If sb2.Length <> 0 Then
sb2.Append(",")
End If
If TypeOf (dr(fieldname)) Is Boolean Then
sb2.Append(String.Format("""{0}"":{1}", fieldname, fieldvalue.ToLower))
Else
If TypeOf (dr(fieldname)) Is DateTime Then
sb2.Append(String.Format("""{0}"":""{1:ddd, dd MMM yyyy HH':'mm':'ss 'EST'}""", fieldname, Convert.ToDateTime(fieldvalue)))
Else
sb2.Append(String.Format("""{0}"":""{1}""", fieldname, fieldvalue))
End If
End If
Next
sb.Append(sb2.ToString())
sb.Append("}")
Next
If e = makejson.e_with_square_brackets Then
sb.Insert(0, "[")
sb.Append("]")
End If
Return sb.ToString()
End Function
Public Enum makejson
e_without_square_brackets
e_with_square_brackets
End Enum
由于
答案 0 :(得分:1)
就在前几天,我正在进行一些调试,并将一些换行/回车引入到一些用于AJAX响应的JSON中。 Safari并不介意,但Firefox不喜欢它,因为换行和回车都不是有效的JSON,所以这很可能是你的问题。
答案 1 :(得分:1)
我认为问题是围绕变量的引用(又名:title,start,end和allday)。删除引号,看看会发生什么。
编辑:文档中的示例
$('#calendar').fullCalendar({
eventSources: [
// your event source
{
url: '/myfeed.php', // use the `url` property
color: 'yellow', // an option!
textColor: 'black' // an option!
}
// any other sources...
]
});
答案 2 :(得分:1)
我的FullCalendar JSON Feed是用PHP编写的。我从MySQL数据库中获取事件信息并在PHP中对其进行格式化,并将其作为日历的JSON文件输出。这是代码的一部分:
$jsonfeed = "[
";
while($row = mysql_fetch_array($result))
{
// some formatting happens here, then:
$jsonfeed .= "
{
\"title\" : \"" . $this_group . "\",
\"start\" : \"" . $row[formatDate] . " " . $row[formatStart] . "\",
\"end\" : \"" . $row[formatDate] . " " . $row[formatFinish] . "\",
\"description\" : \"" . $description . "\",
\"url\" : \"http://mysite.com/" . $row[id] . "\",
\"allDay\" : false
},";
}
// remove the final comma, add final ]
$jsonfeed = substr($jsonfeed, 0, -1) . "
]
";
经过多次变化之后,这最终为我工作了。显然,我需要有这些换行符(没有它们就行不通)。所以,这可能是你想要尝试的。另外,我使用的是当地时区,所以我不需要最后的“Z”,而且我在日期和时间之间有一个空格而不是“T”。我不知道这是否会影响您的代码,但这是其他尝试。
另外,您是否尝试过将JSON代码通过验证器进行检查?