2

当我运行此代码时:

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>

但这也行不通。我在所有引号之前都加上了反斜杠,但我确信我错过了其他五件事和三个大概念。

4

3 回答 3

2

尝试使用 < 和> 如果你想让字符出现

编辑#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;
于 2012-08-01T19:03:23.153 回答
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

于 2012-08-01T19:05:53.330 回答
0

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

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

应该做的伎俩

于 2012-08-01T19:07:16.723 回答