在 GSP 上将 JSON 发送到 javascript

2024-03-04

我正在使用 Grails 2.3.7,并且控制器操作如下:

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({&quot;name&quot;:&quot;Sales&quot;,&quot;type&quot;:&quot;bar&quot;,&quot;data&quot;:[5,20,45,10,10,20]});

看起来 JSON 很混乱。我想它曾经是这样工作的。也许这是新的 Grails?我怎样才能解决这个问题?谢谢。

Update:问题解决了。请参阅已接受答案中的评论。

Update2:今天我检查应用程序时,它又失败了。我用“原始”方法做了文档要求的操作,但没有运气。解决方法是使用“每页编码”。这个我彻底测试过。它确实有效。


问题在于 JSON 被编码为 HTML。请尝试以下方法:

控制器

def testData() {
    def result = [:]
    result['name'] = "Sales"
    result['type'] = "bar"
    result['data'] = [5, 20, 45, 10, 10, 20]
    [data: result as JSON]
}

GSP

<script>
    var data = ${raw(data)};
</script>

你不需要$(document).ready因为JS代码

var data = ${raw(data)};

是在服务器端生成的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 GSP 上将 JSON 发送到 javascript 的相关文章

随机推荐