[英]Passing Jackjson JSON object from JSP to JavaScript function
我有一個存儲在數據庫中的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,“split”:[{“texts”:[{“value”:“Test”,“locationX”:3,“locationY”: - 153,“font”:{“type”:“正常“,”大小“:”中“,”粗體“:false,”顏色“:”5a5a5a“,”斜體“:false}}]}]}
如果有人能指出我的方向,我將非常感激!
編輯:
如果其他人有同樣的問題,請將JSON從JSP傳遞給JS函數
<%=theJSON.replaceAll("\"", "\\\'")%>
這允許你傳遞JSON,
然后在JavaScript中將其恢復為正常的JSON格式
theJSON = theJSON.replace(/'/g,'"');
應該工作正常
我認為包含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;'
您可以按照以下步驟操作
這是一個很好的json美化網站, http://jsbeautifier.org/ ,真的讓字符串變得簡單易讀。
謝謝阿比
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.