我正在开发一个应用程序,它从数据库中的记录中检索一些HTML代码。然后获取该字符串并将其插入特定div中。现在我通过从Java传递变量并在JSP中的div中打印它来完成此任务。现在我正在尝试使用外部jQuery函数来完成这个任务,我正在努力解决如何将这个String传递给jQuery函数。
我试过这样的事情:
<script>
var message = <%=message %>;
</script>
<script src="files/js.js" type="text/javascript"></script>
但是一旦碰到外部函数,它似乎无法解释var(我尝试使用StringEscapeUtils,但没有解决问题)。
答案 0 :(得分:4)
尝试:
var message = '<%= message %>';
答案 1 :(得分:0)
var message = '<%=message %>';
$(message); // we have a jQuery object with a property
// for each html element in the message string!
答案 2 :(得分:0)
遇到这样的问题时,请查看您的信息来源。 message
如何渲染?我的猜测可能是
var message = Passing an HTML string to jQuery function;
哪个无效。将代码包含在叛逆者中将解决这个问题。
var message = '<%= message %>';
我通常也会在窗口对象上放置这样的全局对象,以便更容易找到
window.message = '<%= message %>';
答案 3 :(得分:0)
var message= <%= message %>;
您不仅需要在消息文本周围添加一些引号,还需要为JavaScript字符串文字适当地转义它。否则,消息中的引号将破坏它,并可能使您受到跨站点脚本攻击。
var message= '<%= message.replaceAll("\\\\", "\\\\\\\\").replaceAll("'", "\\\\'") %>';
我认为这是正确的反斜杠数,但是Java String字面反斜杠和正则表达式反斜杠的交互使它们脱离了所有的理智。如果您需要包含那些控制代码,则需要转义控制代码。
总而言之,最好将任务交给JSON编码库,该库将正确输出各种JavaScript类型,而不仅仅是字符串。例如。用json-simple:
var message= <%= JSONValue.toJSONString(message) %>;