问题说明:
今天在做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即可。
上述是自己遇到该问题总结出来的解决方法,我也是在用最后一种方法才解决的,但是具体问题具体分析。