【发布时间】:2012-03-13 14:03:49
【问题描述】:
我在通过 Web 服务将 KendoUI 图表绑定到远程数据库时遇到了一些问题。
这是我的代码:
$("#chart").kendoChart({
theme: $(document).data("kendoSkin") || "default",
dataSource: {
transport: {
read: {
url: "/WebServices/WebFunctions.asmx/RetrieveProjectCountByBMP",
dataType: "json"
}
},
schema: {
model: {
fields: {
Code: { type: "string" },
Count: { type: "number" }
}
}
},
sort: {
field: "Code",
dir: "asc"
}
},
title: {
text: "Project Count by BMP"
},
seriesDefaults: {
type: "column"
},
series: [{
field: "Count",
name: "Project Count"
}],
categoryAxis: {
field: "Code"
},
tooltip: {
visible: true,
format: "{0:N0}"
}
});
这里是网络服务代码:
<WebMethod(EnableSession:=True)> _
Public Function RetrieveProjectCountByBMP() As Object
Dim returnData = (From p As Project In Project.RetrieveAll() _
Join cs As ClaimScope In ClaimScope.RetrieveAll() On p.ProjectId Equals cs.ProjectId _
Join b As BMP In BMP.RetrieveAll On cs.BMPId Equals b.BMPId _
Where (p.ProjectMilestoneId = 17 Or p.ProjectMilestoneId = 18 Or p.ProjectMilestoneId = 19) _
And p.FiscalyearId = 5 _
Select b.Code, p.ProjectId).GroupBy( _
Function(bmpCode) bmpCode.Code _
, Function(proj) proj.ProjectId _
, Function(bmpCode, projects) New With {.Code = bmpCode, .Count = projects.Count()})
Dim serializedReturnData As JavaScriptSerializer = New JavaScriptSerializer(returnData)
Return serializedReturnData.Serialize(serializedReturnData)
Return serializedReturnData
End Function
我已经验证了我的网络服务返回了一个完整的数据集。 问题是当我运行代码时,图表没有被填充。事件日志中没有错误消息和触发事件。
我能找到的唯一问题是 web 服务返回的数据带有前导引号,如下所示:
"[{"Code":"1301","Count":239},{"Code":"1401","Count":178},{"Code":"1001","Count": 33}]"
当我将从 Web 服务返回的数据复制到 .json 文件中并将图表绑定到该文件时,它工作正常。但是,我必须删除前导引号和尾引号才能使其正常工作。
如何让我的网络服务以正确的 JSON 格式返回我的数据?
谢谢。
【问题讨论】:
-
开发人员工具对 JSON 调用有何看法?是否返回 application/json 的结果?
标签: asp.net json web-services kendo-ui