我有一个存储在数据库中的JSON字符串。在我的一个JSP页面中,我检索了这个字符串,我希望能够将String或JSON对象传递给Javascript函数。该功能仅用于测试目的
function test(h){
alert(h);
}
现在我可以从数据库中检索JSON字符串了,我已经将它打印到屏幕上以确保它正在获取它,但是当我像这样传递它时
<input type="button"
name="setFontButton"
value="Set"
class="form_btn_primary"
onclick="test('<%=theJSON%>'); return false;"/>
什么都没发生。我用firebug检查出了什么问题,并说它有无效的字符。
所以我尝试传递JSON对象,如此
Widget widg = mapper.readValue(testing.get(0), Widget.class);
然后传入
onclick="test('<%=widg%>'); return false;"/>
现在这将传入而没有错误,它会提醒对象名称,但是我无法解析它。对象的输入类似于存储窗口小部件类的包名称,如此
com.package.mode.Widget@ba8af9
我尝试使用Stringify,但这似乎不适用于这个Jackson JSON对象。
在失败之后,我尝试了从数据库中获取String并在base64中对其进行编码的最后手段。但是,如果我这样做,这也失败了
String test = Base64.encode(theString);
然后将其传入。但是,如果我这样做,将其打印到屏幕上,然后复制打印出来的内容,然后通过它发送,那么就不太明白为什么会这样。
有人可以告诉我我做错了什么。我尝试了很多不同的解决方案,但没有任何工作。
JSON字符串存储在数据库中,如此
{ “ID”:1, “分裂”: { “文本”: { “值”:“测试”, “locationX”:3, “locationY”: - 153, “字体”:{ “类型”:“普通”, “尺寸”:“中”, “大胆”:假的, “颜色”:“5a5a5a” “斜体”:假的 } } ] } ] }
如果有人能指出我的直接指示,我将非常感激!!
编辑:
如果其他人有同样的问题,请将JSON从JSP传递给JS函数
<%=theJSON.replaceAll("\"", "\\\'")%>
允许您传入JSON,
然后用JavaScript将其恢复为正常的JSON格式
theJSON = theJSON.replace(/'/g,'"');
应该可以正常工作
答案 0 :(得分:2)
我认为包含onclick和你JSON中的双引号的组合可能会搞砸你。可以把它想象成手动输入JSON - 它看起来像这样:
onclick="test('{ "id":1, "splits":[ { "texts":[ { "value":"Test", "locationX":3, "locationY":-153, "font":{ "type":"Normal", "size":"Medium", "bold":false, "colour":"5a5a5a", "italics":false } } ] } ] }'); return false;"
并且id
之前的开头双引号实际上将关闭onclick=
之后的双引号(您应该能够通过查看页面源来验证这一点)。尝试将onclick指定为:
onclick='test(\'<%=theJSON%>\'); return false;'
答案 1 :(得分:0)
您可以按照以下步骤进行操作
这是一个很好的json美化网站,http://jsbeautifier.org/,真的让字符串变得简单易读。
由于 ABHI