我使用的是 Grails 2.3.7,我有一个如下所示的 Controller 操作:
def testData(){
def result = [:]
result['name'] = "Sales"
result['type'] = "bar"
result['data'] = [5, 20, 45, 10, 10, 20]
[data: result as JSON]
}
在 testData.gsp 中,我想在 javascript 中获取 JSON 对象:
<script>
$(document).ready(function(){
var data = JSON.parse(${data});
})
</script>
然后我得到一个异常:
Uncaught SyntaxError: Unexpected token {
在线:
var data = JSON.parse({"name":"Sales","type":"bar","data":[5,20,45,10,10,20]});
看起来 JSON 乱七八糟。我认为它曾经以这种方式工作。也许是新的 Grails?我怎样才能解决这个问题?谢谢。
更新: 问题解决了。请参阅已接受答案中的评论。
更新 2: 我今天检查应用程序时,它又失败了。我用“原始”方法做了文档要求的操作,但没有成功。解决方法是使用“每页编码”。我彻底测试了这个。它确实有效。
最佳答案
问题在于 JSON 被编码为 HTML。请尝试以下操作:
Controller
def testData() {
def result = [:]
result['name'] = "Sales"
result['type'] = "bar"
result['data'] = [5, 20, 45, 10, 10, 20]
[data: result as JSON]
}
普惠制
<script>
var data = ${raw(data)};
</script>
你不需要$(document).ready
因为JS代码
var data = ${raw(data)};
在服务器端生成
关于javascript - 将 JSON 发送到 GSP 上的 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23252891/