我正在尝试将JSON对象保存到gsp页面中的data-
字段。
模拟控制器:
def test(){
['comments': ["1": 1, "3":40 ] ]
}
GSP(我也试过(comments as JSON)
)
<%@ page import="grails.converters.JSON" %>
<div class='findme' data-comments="${comments as JSON}">
结果:
<div class='findme' data-comments="{" 1":1,"3":40}">
正如你所看到的,报价都搞砸了。我尝试使用encodeAsHTML
,但它没有用。
答案 0 :(得分:3)
我最近也遇到了这个问题并提出了两个解决方案:
解决方案一:在模板中执行以下操作:
<div class="comments" data-comments="${comments.encodeAsJSON().encodeAsHTML()}">
解决方案二:在控制器中执行此操作:
def test(){
['comments': ["1": 1, "3":40 ] as JSON]
}
并在模板中执行此操作:
<div class="comments" data-comments="${comments.encodeAsHTML()}">
我正在使用jQuery进行解析。无论使用哪种解决方案,我都会得到JSON:
$.parseJSON($('.comments').attr('data-comments'));
答案 1 :(得分:2)
我找到了几种方法。
<div class='findme' data-comments="${(new JSON(comments)).toString().encodeAsURL()}">
然后我必须把它拉出来:
JSON.parse(unescape($('.findme').data('comments')))
找到了另一种方法,但如果你有任何“in in it it it it it it it it it it it it it it it it it it it it it it it it it it it it it it it it it it it
${(comments as JSON).toString().replace("\"", "'")}
答案 2 :(得分:0)
我找到了一种简单的方法。 首先你做:
<div class="comments" data-comments="${comments.encodeAsJSON()}">
然后在javascript中:
eval($('.comments').attr('data-comments'));