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);
}
控制器中的代码永远不会被执行。有人知道为什么吗?
谢谢。
确保控制器/动作的路径是正确的。取决于你的应用是如何安装的,它可能是正确的,也可能不是。只要你的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都是字符串。然后可以将字符串转换为适当的格式。