我正在使用 GetOrgChart,我真的很喜欢它。他们有来自 JSON 示例的负载,他们的演示中的 javascript 代码如下所示:
<script type="text/javascript">
$.getJSON("http://www.getorgchart.com/JsonInitialization/Read?callback=?", function (source) {
var peopleElement = document.getElementById("people");
var orgChart = new getOrgChart(peopleElement, {
theme: "helen",
primaryFields: ["Name", "Title"],
photoFields: ["Image"],
linkType: "M",
enableEdit: false,
enableDetailsView: false,
dataSource: source
});
});
</script>
获取 JSON 的 URL 如下所示:
http://www.getorgchart.com/JsonInitialization/Read?callback=?
但实际上,您只需要:
http://www.getorgchart.com/JsonInitialization/Read
这将返回此代码:
callback( ...JSON here ... );
所以,不仅仅是 JSON,还有一个回调函数。
现在,我有一个返回正确 JSON 的 Spring 4 MVC RESTful 函数。但是,如果我只是使用 URL 来获取 JSON,例如:
http://127.0.0.1:8080/myapp-be/api/orgCharts/contactId/7
我得到了两个我期待的节点,但没有连接它们的线路。在这种情况下,我认为我需要将 URL 更改为:
http://127.0.0.1:8080/myapp-be/api/orgCharts/contactId/7?callback=?
我认为我需要返回,而不是只返回 JSON 数据:
callback( ...JSON here ... );
我在 Spring 中定义的 RESTful Web 服务如下:
@RequestMapping(value = "/opportunityId/{opportunityId}",
method = RequestMethod.GET,
headers = "Accept=application/json",
produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody List<ChartNodeDTO> getOrgChartData(@PathVariable long contactId)
{
List<ChartNodeDTO> orgChartList = orgChartService.getOrgChartByContactId(contactId);
return orgChartList;
}
问题是......我是否将其更改为返回字符串?在后端,我可以创建一个字符串,例如: String data = "callback(" + json + ");"; 但这似乎不是正确的方法。
我想返回 Javascript 代码,但我只是在调整 Spring REST 参数,并在找到正确的解决方案之前进行反复试验。我想如果有人可以为我节省一些时间,那就太好了……与此同时,我会继续尝试不同的事情。
谢谢!