我正在使用FullCalendar模块(很棒,顺便说一句),我在填充数据库中的事件时遇到了麻烦。我收到一个由C#Web服务创建的JSON字符串。但是,当我尝试解析它并打印出测试警报时,除了“未定义”之外什么都没有。
我的响应字符串在Firebug中看起来像这样:
{d="[{"ScheduleRecId":9,"EmployeeScheduled":"3","TimeStart":"\/Date(1285601677000)\/","TimeEnd":"\/Date(1285601677000)\/","UpdatedBy":"4","LastUpdate":"\/Date(1285601677000)\/","Started":true,"Finished":false}]"}
似乎是一个数组,但当我尝试从JQuery访问它时,如:
success: function(doc) {
alert(doc) //echos "Object oject"
alert(doc[0]) //echos "undefined"
alert(doc.EmployeeScheduled) //echos "null"
}
我也试过用JSON.parse和eval()运气不好。如何访问此对象的属性?
更新
在Nick的回答之后,我决定尝试alert(doc.d[0]);
回复[
我注意到,如果我尝试alert(doc.d[5]);
,我会h
让我相信doc.d会作为一个字符数组出现。我想我可以阅读并解析它,但是不应该有更清晰的方式来访问属性吗?
答案 0 :(得分:1)
因为它来自ASP.NET 3.5或更高版本,所以你需要d
属性,如下所示:
success: function(doc) {
alert(doc.d[0].EmployeeScheduled);
}
这是因为根对象有一个属性d
,它是一个对象数组...所以使用[0]
获取第一个条目,然后使用.EmployeeScheduled
来获取属性。
答案 1 :(得分:0)
最终工作的是:
success: function(obj) {
var schedules = (eval(obj.d));
然后我可以捕获这样的属性:
var event = {
id: schedules[0].ScheduleRecId,
}