Json没有通过控制器

本文关键字:控制器 Json | 更新日期: 2023-09-27 18:17:44

我正在使用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);
    }

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

谢谢。

Json没有通过控制器

确保控制器/动作的路径是正确的。取决于你的应用是如何安装的,它可能是正确的,也可能不是。只要你的javascript代码在你的视图中你可以尝试使用

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

你绝对应该,就像@Phil。惠勒建议,仔细看看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
    });
}

您的JsonResult期望Start和End的两个参数,这两个参数似乎没有通过Ajax方法传递。

你考虑过安装瞥见或检查什么代码回来在Firebug?这可能会让你更深入地了解你的实际网络流量的行为

$。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();

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

As Phil。惠勒建议,使用浏览器调试器来找出发生了什么,尽管我可以这样说:

如果你得到一个500服务器错误,很可能是功能需求没有得到满足,以便执行(假设你实际上击中了正确的URL控制器)。

更进一步,你的方法应该用[HttpPost]

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

我和你有同样的问题。使用Firebug,我意识到调用实际上是以下形式:GetEvents?start=2014-06-29&end=2014-08-10&_=1404512824620这意味着开始和结束不是两个。更改geteevents,使start和end都是字符串。然后可以将字符串转换为适当的格式。