带有右胡萝卜的javascript var给出了奇怪的结果

javascript var with right carrot gives odd results

本文关键字:结果 var 胡萝卜 javascript      更新时间:2024-06-14

当我运行此代码时:

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>

但这也不起作用。我把反斜杠放在所有引号之前,但我确信我遗漏了其他五件事和三个巨大的概念。

尝试使用&lt;和&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;

因此,当您这样做时,您希望服务器将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

在将html字符放入html文档之前,应该转义<>&()等html字符。

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

应该完成