3

data-JSON オブジェクトをgsp ページのフィールドに保存しようとしています。

モックコントローラー:

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ましたがダメでした。

4

3 に答える 3

3

私も最近これに遭遇し、2つの解決策を思いつきました:

解決策 1 : テンプレートで次のようにします。

<div class="comments" data-comments="${comments.encodeAsJSON().encodeAsHTML()}">

解決策2:コントローラーでこれを行います:

def test(){
    ['comments': ["1": 1, "3":40 ] as JSON] 
}

そしてテンプレートでこれを行います:

<div class="comments" data-comments="${comments.encodeAsHTML()}">

解析にはjQueryを使用しています。どちらのソリューションでも、次のように JSON を取得します。

$.parseJSON($('.comments').attr('data-comments'));
于 2013-08-21T17:32:11.127 に答える
2

私はそれを行ういくつかの方法を見つけました。

<div class='findme' data-comments="${(new JSON(comments)).toString().encodeAsURL()}">

次に、次のように引き出す必要があります。

JSON.parse(unescape($('.findme').data('comments')))

それを行う別の方法を見つけましたが、「」が含まれているものがあると問題が発生します。エンコードする方法だと思います。

${(comments as JSON).toString().replace("\"", "'")}
于 2013-03-28T19:44:40.333 に答える
0

それを行う簡単な方法を見つけました。まず、次のことを行います。

<div class="comments" data-comments="${comments.encodeAsJSON()}">

そして、JavaScriptで:

eval($('.comments').attr('data-comments'));
于 2014-08-25T13:15:58.833 に答える