javascript - 将 JSON 发送到 GSP 上的 javascript

标签 javascript json grails

我使用的是 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({&quot;name&quot;:&quot;Sales&quot;,&quot;type&quot;:&quot;bar&quot;,&quot;data&quot;:[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/

相关文章:

javascript - 不允许用于访问此页面的 HTTP 动词

javascript - handlebars 2.0 运行时出现未知模板对象错误

json - AWS Lambda Kinesis消费者-js中的kinesis数据json

grails - 为 Grails 数据库迁移文件将 grails 升级到 2.5.0 时出现类未找到错误

javascript - 为什么我的 Angular ngModel 示例没有抛出错误?

javascript - 如何在 jQuery 中选择具有 this 匹配属性的所有元素?

javascript - 如何从mysql/knexjs中提取重复输入错误(1062)的键

java - 如何将多个 JSON 响应映射到单个 Java POJO?

grails - TDD grails View

unit-testing - Grails 2.1 单元测试命令对象 mockForConstraintsTests 不工作?