2011-12-13 64 views
0

我正在使用jQuery fullcalendar插件和mvc3。json未通過控制器

的jQuery:

$(document).ready(function() { 

    var calendar = $('#calendar').fullCalendar({ 
     header: { 
      left: 'prev, next, today', 
      center: 'title', 
      right: 'month, agendaWeek, agendaDay' 
     }, 
     events: 'CalendarView/GetEvents/' 
    }); 
}); 

控制器(它不會進入此功能):

public JsonResult GetEvents(double start, double end) 
    { 
     var DateStart = ConvertFromUnixTimestamp(start); 
     var DateEnd = ConvertFromUnixTimestamp(end); 
     var JsonRfc = Repo.getCalendar(DateStart, DateEnd); 
     var ret = JsonRfc.ToArray(); 
     return Json(ret, JsonRequestBehavior.AllowGet); 
    } 

控制器中的代碼永遠不會被執行。有沒有人有任何見解,爲什麼?

謝謝。

+0

是否有任何一個提供的答案能夠幫助解決您的問題? –

回答

1

確保控制器/操作的路徑正確。取決於你的應用程序的安裝方式,它可能會或可能不正確。只要你的JavaScript代碼裏面的你的意見,你一個可能與

events: '@Url.Action("GetEvents","CalendarView")' 

嘗試你definetly應作爲@ Phil.Wheeler建議,採取什麼將在Firebug/IE開發工具彈出細看/ Chrome開發人員工具。 (或嘗試http://www.fiddler2.com/fiddler2/如果你想你的瀏覽器之外的東西)

你可能想嘗試首先檢索JSON對象與

$.getJSON('CalendarView/GetEvents/', function(data) { 

    var calendar = $('#calendar').fullCalendar({ 
     header: { 
      left: 'prev, next, today', 
      center: 'title', 
      right: 'month, agendaWeek, agendaDay' 
     }, 
     events: data 
    }); 
} 
+0

問:不會在fullCalendar定義之外執行.getJSON是否意味着整個日曆會在事件加載時重新加載?那麼它會不會總是拿出默認日期呢? – erict

1

您的JsonResult期望開始和結束的兩個參數看起來不會被您的Ajax方法傳遞。

您是否考慮安裝Glimpse或檢查Firebug中返回的代碼?這可能會讓您更深入地瞭解實際網絡流量的行爲。

+0

根據文檔,它看起來像調用事件飼料時自動添加兩個參數:http://arshaw.com/fullcalendar/docs/event_data/events_json_feed/ – torm

0

由於Phil.Wheeler建議的另一種方法,使用瀏覽器的調試器找到發生了什麼事,但我可以這樣說:

如果你得到一個500服務器錯誤很可能的功能要求不是爲了執行得到滿足(假設你實際上是打了控制器正確的網址)。

進一步說,你的方法應該是裝飾有 [HttpPost]

[HttpPost] 
public JsonResult GetEvents(double start, double end) 

+0

-1如果使用HttpPost進行裝飾,則需要在fullCalendar的設置中爲type:'POST'添加事件:部分。原來的問題不通過POST請求 – erict

+0

你是對的我不知道我到底在說什麼。你的返回值甚至指定了'AllowGet'。 -1對我來說! – Terry

0

$就總是對我的作品:

$.ajax({ 
     type:"GET", 
     url: "/CalendarView/Events", 
     data: {start:"", end:""}, 
     datatype: "json" 
     success: function (result) { 
      var calendar = $("#Calendar").fullCalendar({ 
       //define calendar for result.objectreturned 
      });  
     }, 
     error: function() { 
      alert("error"); 
     }, 
    }); 

而且您的控制器可以改變:

var ret = JsonRfc.ToList(); 

這應該是100%。

0

使用Fiddler,我發現我的問題是我的方法沒有正確的變量名'start'和'end'。這是我的服務器錯誤500的原因。

0

我和你有同樣的問題。使用Firebug我意識到調用實際上是以下形式:GetEvents?開始= 2014-06-29 &結束= 2014-08-10 & _ = 1404512824620 這意味着開始和結束不是雙打。改變GetEvents,使開始和結束是最終工作的字符串。然後您可以將字符串轉換爲適當的格式。