将HTML字符串传递给jQuery函数

时间:2009-11-04 19:58:21

标签: java javascript jquery

我正在开发一个应用程序,它从数据库中的记录中检索一些HTML代码。然后获取该字符串并将其插入特定div中。现在我通过从Java传递变量并在JSP中的div中打印它来完成此任务。现在我正在尝试使用外部jQuery函数来完成这个任务,我正在努力解决如何将这个String传递给jQuery函数。

我试过这样的事情:

<script>
var message = <%=message %>;
</script>
<script src="files/js.js" type="text/javascript"></script>

但是一旦碰到外部函数,它似乎无法解释var(我尝试使用StringEscapeUtils,但没有解决问题)。

4 个答案:

答案 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) %>;