Java/Javascript/JSON将JSON字符串从Java传递到Javascript
我正在将我在Java中创建的JSON字符串作为参数传递给从servlet调用的Javascript方法。但是,当我传递JSON字符串时,Firebug会警告我正在传递该字符串:
Java代码:
String jsonString = "{\"id\":1,\"name\":\"Joe Smith\",\"data\":{\"email\":\"smith@gmail.com\",\"phone\":\"555-123-4567\",\"title\":\"CFO\",\"instanceControllerTagLibraryApi\":{\"developmentMode\":false}},\"children\":[],\"instanceControllerTagLibraryApi\":{\"developmentMode\":false}}";
pw.println("<body onload=\"init('"+jsonString+"');\">");
Javascript:
function init(text){
alert(text);
}
我尝试在传递过程中引用字符串并删除单引号。两者基本上都指向这样一个事实,即正在传递的字符串需要(以某种方式)跳出花括号
错误(单引号):
SyntaxError: unterminated string literal [Break On This Error]
init('{
# 1 楼答案
错误不在JSON字符串中,而是在另一段代码中
pw.println("<body onload=\"init('"+jsonString+"');\">");
添加一个onload事件确实是一种粗野的尝试不要试图将JSON字符串添加到HTML字符串中,因为有引号,它不会起作用,除非你双倍地转义JSON字符串,这很愚蠢
当前,您的输出将如下所示:
它将尝试执行JS代码
init('{
# 2 楼答案
弗里茨能解决你的问题,这很好。我肯定会听从他的建议,迅速远离^{
例如:
http://jsfiddle.net/userdude/eQRBk/1/
请注意
window.addEventListener
的使用(以及旧版IE版本的遗留window.attachEvent
)。而且console.log
在Chrome和Firebug中效果更好;在我看来,IE的控制台在记录对象方面更令人沮丧利用你所付出的,你可以(我建议你应该)以不同的方式处理它。不过,请原谅,我对Java不是很精通,我只知道JSP(几乎不知道)。那么
然后,您可以将该JSP页面插入
head
或body
中,它将正常工作。我还设想您可以将其设置为动态地将数据注入JSP页面。但是,就像我说的,我在这里挥手