json没有通过控制器

时间:2011-12-13 01:20:05

标签: c# jquery asp.net-mvc-3 fullcalendar

我正在使用jQuery fullcalendar插件和mvc3。

的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);
    }

控制器内的代码永远不会被执行。有没有人知道为什么?

感谢。

6 个答案:

答案 0 :(得分:1)

你的JsonResult期望开始和结束的两个参数似乎没有被你的Ajax方法传递。

您是否考虑过安装Glimpse或检查Firebug中的代码?这可能会让您更深入地了解实际网络流量的行为。

答案 1 :(得分:1)

确保控制器/操作的路径正确无误。根据您的应用安装方式,它可能是也可能不对。只要您的javascript代码位于您的某个视图中,您就可以尝试使用

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

正如@ Phil.Wheeler建议的那样,你应该仔细看看Firebug / IE Developer Tools / Chrome Developer工具中会出现什么。 (或者,如果您想要浏览器之外的其他内容,请尝试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
    });
}

答案 2 :(得分:0)

正如Phil.Wheeler建议的那样,使用浏览器调试器来查明发生了什么,但我可以这样说:

如果您收到500服务器错误,则可能无法满足功能要求(假设您实际上正在为控制器点击正确的URL)。

除此之外,您的方法应使用[HttpPost]

进行修饰
[HttpPost]
public JsonResult GetEvents(double start, double end)

<击>

答案 3 :(得分:0)

$ .ajax总是对我有用:

    $.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%有效。

答案 4 :(得分:0)

使用Fiddler,我发现我的问题是我的方法没有正确的变量名'start'和'end'。这就是我的服务器错误500的原因。

答案 5 :(得分:0)

我和你有同样的问题。使用Firebug我意识到呼叫实际上是以下形式:GetEvents?start = 2014-06-29&amp; end = 2014-08-10&amp; _ = 1404512824620 这意味着开始和结束都不会加倍。更改GetEvents,以便开始和结束是最终工作的字符串。然后,您可以将字符串转换为适当的格式。