0

我正在使用 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 参数,并在找到正确的解决方案之前进行反复试验。我想如果有人可以为我节省一些时间,那就太好了……与此同时,我会继续尝试不同的事情。

谢谢!

4

0 回答 0