jsp获取绝对路径可以使用<c:set var="ctx" value="${pageContext.request.contextPath}"></c:set>
然后我要在js中引用,我看到有人这么用
<script type="text/javascript" >
<!--
CTX = '${pageContext.request.contextPath}';
//-->
</script>
有那位能给我解惑吗,这段js写在类似标签注释的里面,是啥意思?
还有我使用这种写法,比如写ajax时,在url属性里面加上${ctx}
,不生效又是什么原因?
上面一种是在服务端执行时,将项目路径存到的PageScope中。
<c:set var="ctx" value="${pageContext.request.contextPath}"></c:set>
<%
// 实际上就等于这段代码
String ctx = request.getContextPath();
%>
而下面那一种是在浏览器执行时,将 一个已经确定的字符串赋存到 js的window内。
<script type="text/javascript" >
<!--
CTX = '${pageContext.request.contextPath}';
// 注意!!这里会发生两次变化,第一次是服务器处理EL表达式。
// 之后将处理后的代码发送给浏览器,这时这个值已经是死的并不是一个变量了。
// 实际你审查html,你会看到如下代码。(最后js写的不标准,未定义就直接用了)
CTX = '/demo';
//-->
</script>
再之后 你其他的js文件里就可以通过CTX设置获取项目目录。
至于Ajax 里 还是 ${ctx},这说明你这个js是写到html文件里的。
如果是引用外部script那${ctx}就不能用了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。