在C#.NET 3.5中使用HTTPHandler和jQuery周日历
几周来我一直在努力让它发挥作用,但都无济于事。我确信我的代码一定是因为一些相当小和愚蠢的事情而失败了,但是在尝试了许多不同的方法之后,我开始真正地思考问题可能是什么。有没有其他人能够让jQuery Week Calendar()与返回JSON的HTTPHandler一起工作 我试过:在C#.NET 3.5中使用HTTPHandler和jQuery周日历,jquery,json,.net-3.5,calendar,httphandler,Jquery,Json,.net 3.5,Calendar,Httphandler,几周来我一直在努力让它发挥作用,但都无济于事。我确信我的代码一定是因为一些相当小和愚蠢的事情而失败了,但是在尝试了许多不同的方法之后,我开始真正地思考问题可能是什么。有没有其他人能够让jQuery Week Calendar()与返回JSON的HTTPHandler一起工作 我试过: 将JSON硬编码为字符串形式(例如“events:[{etc}]”)从处理程序中输出 尝试使用或不使用初始“事件”: 使用LINQ检索数据,然后使用JavaScriptSerializer序列化 改用DataCon
有没有人能把这两件事结合起来……?对于其他和我有同样问题的人,我有一些建议可以帮助你。这些都是我发现的唯一对我有帮助的东西,对于那些浪费了数周宝贵时间想知道为什么看起来很好的代码不起作用的人来说,它们只是一个指南。我很清楚我的技能很弱(老人),但如果它能帮一个人节省一些时间,那么我的时间就不会被完全浪费 这是针对C#.NET 3.5 Web表单的,不是针对MVC的。 首先,确保响应对象的ContentType和ContentEncoding属性设置为JSON。在过去,我曾使用“文本/普通”,但在这种情况下,这似乎不适用于我:
context.Response.ContentType = "application/json";
context.Response.ContentEncoding = Encoding.UTF8;
如果使用LINQ,按照日历预期的顺序和格式创建新对象将有助于最大限度地减少数据不规则性问题。如果您需要只读约会,则只需将该选项添加到列表中即可。下面的“title”元素在SQL中用作ISNULL或COALESCE元素,以防止返回null:
var apps = (
from a in db.Appointments
select new {
id = a.id,
start = a.startTime.Value,
end = a.endTime.Value,
title = a.subjectLine == null ? "" : a.subjectLine
}).ToList();
虽然有很多方法可以将数据集序列化为JSON,但我发现最干净的方法是使用库。这只需添加一行即可创建JSON对象,并具有必要的ISO8601日期格式:
return JsonConvert.SerializeObject(apps, new IsoDateTimeConverter());
至于jQuery方面,我将只显示“data:”函数,因为这是让我困惑最久的部分:
data: function(start, end, callback) {
$.ajax({
url: "/content/handlers/GetScheduledAppointments.ashx",
type: "GET",
success: function(json) {
callback(json);
},
async: false
});
}
在我开始使用Json.NET库之前,我得到了一个关于日期的简便提示-如果您无法让.NET以jWC喜欢的格式返回日期,那么使用[Date.js库在jQuery本身中执行其他格式设置。几天来,我无法让后端以日历上显示的格式输出开始和结束时间,无论我尝试了什么。在所有功能示例中(jQuery中生成了本地数据)正在使用以下格式创建日期:
new Date(year, month, day, hour, minute)
因此,使用这个基础,还可以显式地强制转换从后端返回的日期,因为Date.js库几乎可以接受任何接近日期的内容,并发挥其魔力:
data: function(start, end, callback) {
$.ajax({
url: "/content/handlers/GetScheduledAppointments.ashx",
type: "GET",
success: function(json) {
if ($.isArray(json)) {
$.each(json, function(key, value) {
value.start = new Date(value.start);
value.end = new Date(value.end);
});
}
callback(json);
},
async: false
});
}
我知道这些都不是很好(甚至不是很好),但希望这对一些在使用jWC和.NET时遇到实际困难的人有用。tx很多。我在将jWC与asp.NET MVC集成时遇到了问题。这篇文章帮助了我非常好的人,我从两天以来一直在努力,我仍然需要一些帮助,你能分享你的“json”吗回复?我只是想查看服务器发送的日期时间格式,我正在使用Web API。如果我还有它,我可以。不幸的是,我不再在该代码所在的帖子中工作了,所以对此我真的很抱歉。希望你能将其整理好!
data: function(start, end, callback) {
$.ajax({
url: "/content/handlers/GetScheduledAppointments.ashx",
type: "GET",
success: function(json) {
if ($.isArray(json)) {
$.each(json, function(key, value) {
value.start = new Date(value.start);
value.end = new Date(value.end);
});
}
callback(json);
},
async: false
});
}