今天在做Web项目的一些代码效果测试的时候,用Tomcat跑的时候无法正常运行,并且在浏览器出现了如下的错误提示:
根据提示,是 $ 符号没有定义,那么往代码上寻找源头,运用到的地方是要进行ajax异步请求的。
<script> $(function(){ $("#btn").click(function () { $.ajax({ url:"user/testAjax", contentType:"application/json;charset=UTF-8", data:'{"username":"hehe","password":"123","age":"20"}', dataType:"json", type:"post", success:function (data) { } }) }); });结合错误提示,找到主要的错误是jQuery的jar没有加载进来,但是查看自己加载的代码是存在的。
<script src="js/jquery-3.3.1.min.js"></script>疑惑就出来,然后找了解决方法,得到了解决加载js这一类问题的总结。
1.加载方式没有写正确,我这是3.3.1版本的,根据自身的jquery版本来对号入座就行了。
<script src="js/jquery-3.3.1.min.js"></script>2.检查是否把jquery的文件放进WEB-INF目录下,因为我用的是Tomcat的, 是禁止对 WEB-INF 之下一切资源的访问的。所以最好放在与WEB-INF 目录同级。
3.使用SpringMVC的时候是否存在静态资源被拦截了,比如在配置前端控制器的时候,将所有的资源一股脑都进行了拦截。
<!--配置前端控制器--> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>可以在springmvc.xml(Spring Config)文件中将一些静态资源设置为不拦截。
<mvc:resources location="/js/" mapping="/js/**"/>4.上述的三种方法都没有用的话,就要看看IDEA中的out或模块中的target目录里面是否存在对应的静态资源。若是没有,可以使用以下的解决方法。 (1)在File下的Project Structure点击,选择Artifacts. (2)到Artifacts -> Output Layout下点击下面的图标。
(3)接着下面的步骤。
(4)重启Tomcat即可。
上述是自己遇到该问题总结出来的解决方法,我也是在用最后一种方法才解决的,但是具体问题具体分析。