grailsコントローラーからJSに渡すこの文字列があり、jqueryの文字列で $.parseJSON() メソッドを実行しようとしていますが、失敗します。JSON lint でテストしたところ、形式が正しくありませんでしたが、その理由がわかりません。
private String copydec = """ {
"header" : "",
"copy" : "<p style='font-family: tahoma, arial, helvetica, sans-serif; font-size: 12px;'><b>Title for some copy</b></p>
<p><span style='font-size: 12px;'>Lorem ipsum onsectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio.</span></p>
<p><span style='font-size: 12px;'>Lorem ipsum onsectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio.</span></p>
<p><span style='font-size: 12px;'></span></p>
<p style='font-family: tahoma, arial, helvetica, sans-serif; font-size: 12px;'></p>
<p style="font-family: tahoma, arial, helvetica, sans-serif; font-size: 12px;"></p>",
"checkboxLabel" : "<p>What can I help you with</p>
<p></p>"
} """
コメントで提案されているように、改行なしですべてを1行に追加しようとしましたが、それでも不正な形式になっています。
{
"header" : "","terms" : "<p style="font-family: tahoma, arial, helvetica, sans-serif; font-size: 12px;"><b>Recurring Payments Authorization</b></p><p><span style="font-size: 12px;">Lorem ipsum onsectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio.</span></p><p><span style="font-size: 12px;">Lorem ipsum onsectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio.</span></p><p><span style="font-size: 12px;"></span></p><p style="font-family: tahoma, arial, helvetica, sans-serif; font-size: 12px;"></p><p style="font-family: tahoma, arial, helvetica, sans-serif; font-size: 12px;"></p>","checkboxLabel" : "<p>I accept these terms and conditions.</p><p></p>","digitalSignatureDescription" : "Digital Signature","digitalSignatureDetails" : "Complete digital phone authorization description consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore Description consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore","acceptTermsDesc" : "You must accept these Terms and Conditions to continue with your order.","timestamp" : "07/30/2013 12:58:39","version" : "","signatureDateLabel" : "Date","fullNameLabel" : "Full Name","birthdateLabel" : "Date of Birth","digitalSignatureID" : "BILLING","signatureType" : "TANDC","signatureMethod" : "SIGNATURE"
}
更新: JSフィドルで動作するようになったdmahapatroの回答に基づいています。grails コントローラー内のコードを次のように変更しました。
private String copydec = """
'{"header":"","copy":"<p style=\'font-family: tahoma, arial, helvetica, sans-serif; font-size: 12px;\'><b>Title for some copy</b></p><p><span style=\'font-size: 12px;\'>Lorem ipsum onsectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio.</span></p><p><span style=\'font-size: 12px;\'>Lorem ipsum onsectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio.</span></p><p><span style=\'font-size: 12px;\'></span></p><p style=\'font-family: tahoma, arial, helvetica, sans-serif; font-size: 12px;\'></p><p style=\'font-family: tahoma, arial, helvetica, sans-serif; font-size: 12px;\'></p>","checkboxLabel" : "<p>What can I help you with</p><p></p>"}'
"""
私の index.gsp ファイルでは、コントローラー変数を非表示の入力フィールドにダンプしています。
<input type="hidden" id="copy" value='${bean.copydec}' />
次に、JS ファイルからこれにアクセスします。
var str = $('#termsAndConditions').val();
console.log("str = ", str);
var termsJSON = $.parseJSON( str );
エラー: Uncaught SyntaxError: 予期しない入力の終わり