带有右胡萝卜的javascript var会产生奇怪的结果

时间:2012-08-01 18:58:34

标签: javascript html var

当我运行此代码时:

var newHtml = "<jsp:include page=m_searchform.jsp> ";

我的页面无法加载,我收到错误。

当我运行此代码时:

var newHtml = "<>jsp:include page=m_searchform.jsp ";

加载很好。为什么字符串末尾的正确胡萝卜会给我这样的问题?

我真正想做的是把它放到某个div的innerHTML中:

<div id = "searchWrapper">
<form style="vertical-align:50%;" name = "searchForm" action="m_search.jsp">
<input class="searchBox" type="search" name="w"/>
<input class = "greenBtn" type="submit" value="Search"/></form>
</div>

但那也没有用。我在所有引号之前都加了反斜杠,但我确定我错过了其他五件事和三个巨大的概念。

3 个答案:

答案 0 :(得分:2)

尝试使用&amp; lt;和&amp; gt;如果你想让字符显示

编辑#2:

根据epascarello的回答(和评论),我的编辑#2本身就不够了。您需要从该JSP包含文件中提取所有换行符,或者您需要使用搜索和替换函数来替换导入文本上的换行符,然后再将其打印出来,所有这些都在JSP方面。

我想出来了 - 大声笑,你可以在javascript中使用你的JSP标签,就像你正在做的那样,你的页面不会加载而你得到错误的原因是因为你的服务器正在解析那个JSP标签(当你拥有它时)正确写),因此注入了HTML。我想这可行,但是你必须将JSP标签包装在单引号而不是双引号中,因为服务器要注入的HTML会在其中包含一堆双引号!

所以就这样做:

var newHtml = '<jsp:include page=m_searchform.jsp>';

编辑#1:

您已经执行了类似的操作,因为您无法从javascript插入JSP标记。服务器在JS执行开始之前完成解析JSP。

var newhtml = '<div id = "searchWrapper">
<form style="vertical-align:50%;" name = "searchForm" action="m_search.jsp">
<input class="searchBox" type="search" name="w"/>
<input class = "greenBtn" type="submit" value="Search"/></form>
</div>';


someObject.innerHTML = newhtml;

答案 1 :(得分:1)

因此,当您这样做时,您希望服务器将HTML内容添加到JavaScript变量中。

var newHtml = "<jsp:include page=m_searchform.jsp> ";

当您查看页面源时,它看起来像这样

var newHtml = "<input type="text" name="asdasdas" />
<input type="text" name="sdfsdf" />
<input type="text" name="werwe" />";

这不是有效的JavaScript

答案 2 :(得分:0)

在将它们放入HTML文档之前,您应该转义<>&()之类的html字符。

string.split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split("(").join("&#40;").split(")").join("&#41;")

应该做的伎俩