zgd000888
zgd000888
2011-01-13 10:23

js文件中调用jsp变量的问题

已采纳

两个相似的js方法都调用jsp变量,一个直接写在jsp文件中,另一个写成js文件,并在jsp中引入。
test.js文件:
function f1() {
alert("<%=str %>");
}

Myjsp.jsp文件:
<% String str = "yes" %>
...
<br> function f2() {<br> alert(&quot;&lt;%=str %&gt;&quot;);<br> }</p> <pre><code> window.onload=function(){ f1(); f2(); } &lt;/script&gt; </code></pre> <p>f1()方法输出不正确:&lt;%=str %&gt;<br> f2()方法输出正确: yes</p> <p>说明js文件中调用jsp变量会有问题,请高手稍微指点一下啊,到底是什么原理</p>

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • CaiHuajiang CaiHuajiang 10年前

    js是否会被当作jsp解析,是看你的web.xml配置。
    如果你将js映射为default Servlet。那么就会当jsp解析,当然输出也是jsp。
    否则就使用默认的,根据MINE TYPE解析
    至于输出是否是js,也不是看后缀,而是Response的ContentType

    说白了,输入输出的只是流而已。

    点赞 评论 复制链接分享
  • CaiHuajiang CaiHuajiang 10年前

    原理就是js中的表达式是不会被解析的。只会原样输出。

    办法有2:
    其1,使用模板输出js,例如,jsp可以模拟所有的输出,你引用一个文件

    在jsp设置头为application/x-javascript 当然,你也可以使用其他任何模板工具进行输出。 其2,在js文件引用前,设置一个变量,如 Myjsp.jsp var a = <%=str%>;

    test.js
    alert(a);

    看你愿用那个吧

    点赞 评论 复制链接分享

相关推荐