好气哦,在网上找答案如同浪淘沙。
前提:
我是想用个登录的小案例,给我朋友讲解一下ajax的简单用法,结果触发点击事件,没反应。打开浏览器调试,发现jQuery文件成功加载,但是报错$ is not defined,后面还有触发函数的名字。
遇到问题就百度,好嘛,解决办法千篇一律,都试了,对我来说没鸟用(其实,还是有点点用的。。。生存欲极强的我),比如说加载路径不对啦,引入文件顺序错误啦等等。下面我说一下我的解决办法。
方法一:去掉 <script>标签里的type="javascript",没错就是这么简单,H5不需要写type类型了,默认就是javascript。虽然不是很明白多写为啥会报错,不过问题倒是解决了。有知道的小伙伴麻烦在评论区指教一二,我将不胜感激。
参考博客:https://blog.csdn.net/Tylgdx507/article/details/105152681
<%--错误用法--%>
<script type="javascript" src="${pageContext.request.contextPath}/static/js/jquery-3.5.1.js"></script>
<%--正确用法--%>
<script src="${pageContext.request.contextPath}/static/js/jquery-3.5.1.js"></script>
方法二:引入JQuery的在线包,但有时候网络访问慢的时候,就有问题了。可以做两手准备,在加载失败的时候引用本地jQuery文件。
<%--引入jquery的在线包--%>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
附:本项目用的是Maven管理的SSM框架。我把静态文件放在了webapp的static文件夹下。
注:要过滤静态资源,不然不能访问静态文件,会报404错误。springmvc.xml局部配置如下:
<!--过滤静态资源-->
<mvc:resources location="/static/js/" mapping="/static/js/**"/>
<!-- 设置默认配置方案 -->
<mvc:annotation-driven />
<!-- 使用默认的Servlet来响应静态文件 -->
<mvc:default-servlet-handler />