2012-09-09 94 views
1

作为一群其他人,我有一个问题让我的JSON供稿事件在日历中呈现。这个问题通常是错误的JSON格式化,但事实并非如此,因为我已经使用JSONlint对其进行了验证,并且对Site.Master中的JSON提要进行了硬编码,并取得了积极的结果。fullCalendar事件即使正确的JSON供稿不会显示

FireBug获得了正确的JSON响应,但它仍然没有显示在fullCalendar中。我没有想法。萤火虫回应: [{“id”:1,“title”:“TESTTITLE”,“info”:“INFOINFOINFO”,“start”:“2012-08-20T12:00:00”,“端 “:” 2012-08-20T12:00:00" , “用户”:1}]

JSON.aspx

public partial class JSON : System.Web.UI.Page 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
    // Get events from db and add to list. 
    DataClassesDataContext db = new DataClassesDataContext(); 
    List<calevent> eventList = db.calevents.ToList(); 

    // Select events and return datetime as sortable XML Schema style. 
    var events = from ev in eventList 
       select new 
       { 
        id = ev.event_id, 
        title = ev.title, 
        info = ev.description, 
        start = ev.event_start.ToString("s"), 
        end = ev.event_end.ToString("s"), 
        user = ev.user_id 
       }; 

    // Serialize to JSON string. 
    JavaScriptSerializer jss = new JavaScriptSerializer(); 
    String json = jss.Serialize(events); 

    Response.Write(json); 
    Response.End(); 
    } 
} 

的Site.Master

<link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />  
<link href='fullcalendar/fullcalendar.css' rel='stylesheet' type='text/css' /> 
<script src='jquery/jquery-1.7.1.min.js' type='text/javascript'></script> 
<script src='fullcalendar/fullcalendar.js' type='text/javascript' ></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#fullcal').fullCalendar({ 

      eventClick: function() { 
       alert('a day has been clicked!'); 
      }, 
      events: 'JSON.aspx' 
     }) 
    }); 
</script> 

我已经扫描有关天的相关问题,但没有一个似乎修复我的...

+0

可能重复(已编辑)](http://stackoverflow.com/questions/12339508/fullcalendar-fetching-json-feededited) –

+0

那不是你如何填写ajax –

+0

是LB这是一个更新。我无法弄清楚如何删除它。 – Mix

回答

2

试试这个,你必须有在aspx文件一个WebMethod是fullcalendar可以异步调用

 $(document).ready(function() { 
     $('#fullcal').fullCalendar({ 
     eventClick: function() { 
      alert('a day has been clicked!'); 
     }, 
      events: function (start, end, callback) { 
      $.ajax({ 
       type: "POST", //WebMethods will not allow GET 
       url: "json.aspx/GetEvents", //url of a webmethod - example below 
       data: "{'userID':'" + $('#<%= hidUserID.ClientID %>').val() + "'}", //this is what I use to pass who's calendar it is 
       //completely take out 'data:' line if you don't want to pass to webmethod - Important to also change webmethod to not accept any parameters 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (doc) { 
        var events = []; //javascript event object created here 
        var obj = $.parseJSON(doc.d); //.net returns json wrapped in "d" 
        $(obj.event).each(function() { //yours is obj.calevent       
          events.push({ 
          title: $(this).attr('title'), //your calevent object has identical parameters 'title', 'start', ect, so this will work 
          start: $(this).attr('start'), // will be parsed into DateTime object  
          end: $(this).attr('end'), 
          id: $(this).attr('id') 
         }); 
        });      
        callback(events); 
       } 
      }); 
     } 
     }) 

那么这将是json.aspx

[WebMethod(EnableSession = true)] 
public static string GetEvents(string userID) 
{ 
    DataClassesDataContext db = new DataClassesDataContext(); 
List<calevent> eventList = db.calevents.ToList(); 

// Select events and return datetime as sortable XML Schema style. 
var events = from ev in eventList 
      select new 
      { 
       id = ev.event_id, 
       title = ev.title, 
       info = ev.description, 
       start = ev.event_start.ToString("s"), 
       end = ev.event_end.ToString("s"), 
       user = ev.user_id 
      }; 

// Serialize to JSON string. 
JavaScriptSerializer jss = new JavaScriptSerializer(); 
String json = jss.Serialize(events); 
return json; 
} 
[Fullcalendar /撷取JSON饲料的
+0

好吧,我编辑了一堆发布后的时间,并提出了很多意见,如果你在我发布后尝试这个权利,现在不同了,试试这个 –

+0

是的,我没有直接尝试它,它没有工作。我会再试一次!谢谢 我试着删除数据字段的新代码,并更改了GetEvents()的参数,现在fullcalendar消失了。 – Mix

+1

如果fullcalendar消失,那么你有一些无效的JavaScript在那里是不会导致它的任何功能 –