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

带有右胡萝卜的javascript变量给出了奇怪的结果,javascript,html,var,Javascript,Html,Var,当我运行此代码时: var newHtml = "<jsp:include page=m_searchform.jsp> "; var newHtml = "<>jsp:include page=m_searchform.jsp "; var newHtml=”“; 我的页面无法加载,因此出现错误 当我运行此代码时: var newHtml = "<jsp:include page=m_searchform.jsp> "; var newHtml =

当我运行此代码时:

var newHtml = "<jsp:include page=m_searchform.jsp> ";
var newHtml = "<>jsp:include page=m_searchform.jsp ";
var newHtml=”“;
我的页面无法加载,因此出现错误

当我运行此代码时:

var newHtml = "<jsp:include page=m_searchform.jsp> ";
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>


但这也不起作用。我把反斜杠放在所有引号之前,但我肯定我遗漏了另外五件事和三个重要的概念。

如果你想让字符出现,请尝试使用and

编辑#2:

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

我想出来了-哈哈,你可以像现在这样在javascript中使用JSP标记,但是,你的页面不会加载并且会出现错误的原因是因为你的服务器正在解析JSP标记(当你正确编写它的时候),从而注入html。我想这是可行的,但是您必须将JSP标记封装在一个单引号中,而不是双引号中,因为服务器将要注入的HTML将在其中包含一堆双引号

那么就这么做吧:

var newHtml = '<jsp:include page=m_searchform.jsp>';
var newHtml='';
编辑#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;
var newhtml='1〕
';
someObject.innerHTML=newhtml;

因此,当您执行此操作时,您希望服务器将HTML内容添加到JavaScript变量中

var newHtml = "<jsp:include page=m_searchform.jsp> ";
var newHtml=”“;
当您查看页面源代码时,它将如下所示

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

这是无效的JavaScript

在将html字符放入html文档之前,您应该转义html字符,例如
&()

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

我不确定,但我认为JSP标记是服务器端的,因此您无法通过javascript加载它们,服务器将不再进行解析。。。我可能是错的,我从来没有使用过JSP,虽然我认为它在服务器解析方面类似于PHP。那可能对我来说是一个潜在的问题。你忘了seimicolon?(;)请注意HTML周围的单引号容器,因为您使用了大量的双引号,因此使用单引号包装比转义所有双引号更容易。编辑#1非常适合我想做的事情。我试着用双引号代替单引号,这也行得通。非常感谢。JSP不是为HTML编码文本/输出提供了一些便利吗?分配变量对我来说很好,至少在Chrome控制台中是这样的。。。错误是什么?代码的其余部分是什么?他说它没有显示,因为它不是一个有效的HTML标记,所以它甚至没有被画出来。他必须提取jsp include生成的包装器代码,并在js变量赋值中使用该html。我的意思是,它抛出了某种类型的错误,我的页面没有显示。当我尝试分配var=“blah blah blah”时,没有错误,我的网页都在那里。你错过了它,就像我一开始做的那样。。。他试图注入JSP代码进行解析,但这并没有发生,因为在js执行时,他不再是服务器端了。JS是客户端,JSP是服务器端。注入该命令只会将字符串放入页面中;它不会被解析。如果Chase想调用JSP,这不是一个好办法。这是完全正确的,为什么他应该用单引号而不是双引号括起来!事实上,单引号不会有帮助,因为其中会有新行,而这些新行会导致错误。啊,是的。啊!他将不得不使用相当于preg_replace的jsp来删除换行符。。。