我正在使用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,而是一个回调函数。
现在,我有一个Spring 4 MVC RESTful函数,它返回正确的JSON。 但是,如果我只是使用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,例如:String data =“callback(”+ json +“);”; 但这似乎不是正确的方法。
我想返回Javascript代码,但我只是调整Spring REST参数,并在找到正确的解决方案之前进行反复试验。 我想如果有人可以节省我一些时间,那就太棒了......在此期间,我会继续尝试不同的事情。
谢谢!