所以,我将数据解析为json,然后放入模型属性。像这样:
@RequestMapping("/{id}")
public String getNetworkDetails(Model model, @PathVariable String id) throws JsonProcessingException{
model.addAttribute("poolHashrates", findAndDisplayDataService.getAllPools(Long.valueOf(id)));
model.addAttribute("poolDataJson", findAndDisplayDataService.returnPoolsAsJson(Long.valueOf(id)));
return "networkDetails :: modalContents";
}
接下来我试图通过以下方式将一个poolDataJson
字符串分配给html片段中的JS变量:
<script>
var data = eval('('+'${poolDataJson}'+')');
console.log(data);
</script>
我想对数据做什么,将其作为我的饼图数据传递给外部JavaScript文件。但首先我在字符串赋值时遇到错误:
Uncaught SyntaxError: Unexpected token {
我错过了什么?
修改
我还尝试通过以下方式将json字符串分配给隐藏输入:
<input type="hidden" id="networkId" th:value="${poolDataJson}"/></td>
然后阅读:
var data = document.getElementById('networkId').innerHTML;
console.log(data);
但同样,在控制台中没有任何内容。当我将${poolDataJson}
放入
时,它会在页面上正确打印...
答案 0 :(得分:1)
您不应该将String作为JSON文本返回。相反,你应该返回常规的Java对象,然后像这样评估它(thymeleaf会自动将对象转换为JSON):
<script th:inline="javascript">
var data = /*[[${poolDataJson}]]*/ {};
console.log(data);
</script>
至于你的错误。我不得不猜测你的方法findAndDisplayDataService.returnPoolsAsJson
正在返回无效的JSON。没有一个真实的例子,很难说清楚。