用网页直接访问jsp正常,但是用action跳转之后js就失效了,报错是js里面的方法没有执行,求大神帮助

JavaScript07

用网页直接访问jsp正常,但是用action跳转之后js就失效了,报错是js里面的方法没有执行,求大神帮助,第1张

提供的信息量太少,只能说下可能的原因了。如果你js引入路径src=“/js/xxx.js”用action访问的话前面会加上你访问action命名空间的名字。如:/user/xxx.action,jsp引入的路径会变成http://ip:端口号/工程名/user/js/xxx.js,就访问不到js了。可以改成src=“js/xxx.js”去掉第一个斜线。

出现这种情况的原因:

1.服务器的项目中对应的缓存文件没有清除,导致客户端到服务器读取的还是之前缓存的js和css文件(未修改之前的代码)

2.客户端的浏览器没有清除缓存,或者缓存清除不干净,还有缓存存在,导致浏览网页时,读取的还是本地缓存的css和js文件,没有去服务器上面读取最新的css和js文件

解决方法:

1.针对第一种情况,一般项目发布时,都会清除下服务器上对应项目的缓存,如果发布的时候忘记清除了,记得要清除一下,因为我之前就是这样,没有清除服务器上面的缓存,导致客户端读取的还是服务器上的缓存文件,所以修改的代码就没有生效

2.针对第二种清除,如果已经确认服务器缓存清除了的话,不是服务器缓存问题,那么可以考虑在引用css和js文件后加上一个随机数(也称之为版本号)如:

<script type="text/javascript" src="<%=request.getContextPath()%>/JS/common.js?v=20180201"></script>

<link href="<%=request.getContextPath()%>/CSS/Common.css?v=20180201"  rel="stylesheet" type="text/css" />

3.第三种方式,如果以上两种方法都是没有用的话,那恭喜你了,,遇到了我没有遇到过的情况,,这种情况下,有种修改情况肯定是可以解决这个问题的,直接修改你引用的css和js文件名称,这样子应该肯定是可以的,

如上