将Jackjson对象从JSP传递到JavaScript函数
我在数据库中存储了一个JSON字符串。在我的一个JSP页面中,我检索这个字符串,我希望能够将字符串或JSON对象传递到Javascript函数中。此函数仅用于测试目的将Jackjson对象从JSP传递到JavaScript函数,java,javascript,json,Java,Javascript,Json,我在数据库中存储了一个JSON字符串。在我的一个JSP页面中,我检索这个字符串,我希望能够将字符串或JSON对象传递到Javascript函数中。此函数仅用于测试目的 function test(h){ alert(h); } 现在我可以从数据库中检索JSON字符串了,我已经将它打印到屏幕上以确保它得到了它,但是当我像这样传入它时 <input type="button" name="setFontBu
function test(h){
alert(h);
}
现在我可以从数据库中检索JSON字符串了,我已经将它打印到屏幕上以确保它得到了它,但是当我像这样传入它时
<input type="button"
name="setFontButton"
value="Set"
class="form_btn_primary"
onclick="test('<%=theJSON%>'); return false;"/>
然后把它递进去
onclick="test('<%=widg%>'); return false;"/>
我尝试过使用Stringify,但在这个Jackson JSON对象上似乎不起作用
在所有这些失败之后,我尝试了最后一种方法,从数据库中获取字符串,并用base64对其进行编码。然而,如果我这样做,这也会失败
String test = Base64.encode(theString);
把它传过来。然而,如果我这样做,把它打印到屏幕上,然后复制打印出来的内容,并通过它发送出去,所以我不太明白为什么会这样
有人能告诉我我做错了什么吗。我尝试了很多不同的解决方案,但都没有效果
JSON字符串存储在数据库中,如下所示
<input type="button"
name="setFontButton"
value="Set"
class="form_btn_primary"
onclick="test('<%=theJSON%>'); return false;"/>
{
“id”:1,
“拆分”:[
{
“案文”:[
{
“值”:“测试”,
“位置X”:3,
“地点”:-153,
“字体”:{
“类型”:“正常”,
“大小”:“中等”,
“粗体”:假,
“颜色”:“5A5A”,
“斜体”:假
}
}
]
}
]
}
如果有人能给我指点方向,我将非常感激
编辑:
如果其他人也有同样的问题,请执行此操作以将JSON从JSP传递到JS函数
<%=theJSON.replaceAll("\"", "\\\'")%>
应该可以正常工作我认为将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;'
onclick='test(\'\');返回false;'
您可以按照以下步骤操作
Abhi您的思路是正确的,必须将其转义,只是从数据库中抓取它,然后使用replaceAll命令将其转义,然后将新字符串传递到javascript中
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;"
onclick='test(\'<%=theJSON%>\'); return false;'