【发布时间】:2018-08-01 05:00:19
【问题描述】:
很明显,我是遇到此问题的众多人中的一员,过去一个小时左右我一直在谷歌搜索,但似乎无法解决我的问题。
我正在尝试使用 AJAX 从我的控制器中获取数据以放入 jQuery FullCalendar, 现在我对我的控制器相当有信心,我仍然收到错误消息:
json 中位置 0 处的意外标记 U
所以肯定有问题。
这是我用来从控制器中的数据库中获取数据的脚本:
[HttpPost, ActionName("List")]
[WebMethod(EnableSession = true)]
public ActionResult List()
{
temphrmEntities db = new temphrmEntities();
List<medewerker_melding> eventList = db.medewerker_melding.ToList();
// Select events and return datetime as sortable XML Schema style.
var events = from ev in eventList
select new
{
id = ev.ID,
title = ev.medewerker.voorvoegsel + ". " + ev.medewerker.achternaam,
desc = ev.Omschrijving,
start = ev.datum_van.ToString(),
end = ev.datum_tot.ToString(),
user = ev.medewerkerID,
melding = ev.meldingID
};
// Serialize to JSON string.
JavaScriptSerializer jss = new JavaScriptSerializer();
String json = jss.Serialize(events);
Debug.WriteLine("Json:"+json);
return Json(json, JsonRequestBehavior.AllowGet);
}
这是它返回的 Json 格式:
[
{
"id":1,
"title":"K. Keesen",
"desc":"zelf ziek gemeld",
"start":"2-2-2018 13:00:00",
"end":"5-2-2018 13:00:00",
"user":15,
"melding":1
},
{
"id":3,
"title":"K. Keesen",
"desc":null,
"start":"2-2-2018 13:00:00",
"end":"5-2-2019 13:00:00",
"user":15,
"melding":1
},
{
"id":5,
"title":"K. Keesen",
"desc":null,
"start":"14-2-2018 08:30:00",
"end":"",
"user":15,
"melding":1
},
{
"id":6,
"title":"K. Keesen",
"desc":"srgsrgrgdrgdrgd",
"start":"7-2-2018 08:30:00",
"end":"",
"user":38,
"melding":13
},
{
"id":7,
"title":"T. test",
"desc":null,
"start":"14-2-2018 08:30:00",
"end":"21-2-2018 17:00:00",
"user":63,
"melding":10
},
{
"id":8,
"title":"K. Keesen",
"desc":null,
"start":"16-2-2018 08:30:00",
"end":"23-2-2018 17:00:00",
"user":28,
"melding":14
},
{
"id":9,
"title":"K. Keesen",
"desc":null,
"start":"14-2-2018 08:30:00",
"end":"",
"user":33,
"melding":12
},
{
"id":10,
"title":"K. Keesen",
"desc":"fvghbj",
"start":"22-2-2018 08:30:00",
"end":"",
"user":15,
"melding":11
},
{
"id":11,
"title":"K. Keesen",
"desc":null,
"start":"15-2-2018 08:30:00",
"end":"22-2-2018 17:00:00",
"user":15,
"melding":1
},
{
"id":12,
"title":"K. Keesen",
"desc":null,
"start":"23-2-2018 08:30:00",
"end":"",
"user":15,
"melding":1
},
{
"id":13,
"title":"K. Keesen",
"desc":"Test take #25",
"start":"7-2-2018 08:30:00",
"end":"23-2-2018 17:00:00",
"user":15,
"melding":1
},
{
"id":14,
"title":"K. Keesen",
"desc":null,
"start":"8-2-2018 08:30:00",
"end":"",
"user":15,
"melding":1
}
]
我使用Json Formatter & Validation检查它是否有效
最后是我的ajax函数:(我不太擅长ajax所以复制粘贴它)
function GenerateCalendar() {
$("#calendar").fullCalendar({
theme: true,
header: {
left: "prev,next today",
center: "title",
right: "month,agendaWeek,agendaDay"
},
defaultView: 'month',
selectable: true,
selectHelper: true,
editable: true,
eventLimit: true,
events: function (start, end, callback) {
$.ajax({
type: "POST", //WebMethods will not allow GET
url: '@Url.Action("List/medewerker_melding")', //url of a webmethod - example below
//data: "", //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')
});
});
callback(events);
}
});
},
select: function (start, end) {
var start = moment(start).format();
var end = moment(end).format();
$('#startDate').val(start);
$('#endDate').val(end);
$('#eventModal').modal();
if ($('#eventModal')) {
$(".meldingForm").submit(function () {
//insertEvents();
});
$('#calendar').fullCalendar('renderEvent', events, true);
}
$('#calendar').fullCalendar('unselect');
},
});
}
谢谢!
【问题讨论】:
-
该错误意味着响应不是 JSON。在控制台的网络选项卡中找到请求并准确检查响应是什么
-
每个网络的状态都是 200:正常,除了一个状态为 101 交换协议并且永远挂起...
标签: jquery json ajax razor asp.net-mvc-5