天天看点

$ is not defined...js加载失败问题

问题说明:

        今天在做Web项目的一些代码效果测试的时候,用Tomcat跑的时候无法正常运行,并且在浏览器出现了如下的错误提示:

$ is not defined...js加载失败问题

问题分析:

        根据提示,是 $ 符号没有定义,那么往代码上寻找源头,运用到的地方是要进行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没有加载进来,但是查看自己加载的代码是存在的。

疑惑就出来,然后找了解决方法,得到了解决加载js这一类问题的总结。

方法总结:

        1.加载方式没有写正确,我这是3.3.1版本的,根据自身的jquery版本来对号入座就行了。

        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)文件中将一些静态资源设置为不拦截。

        4.上述的三种方法都没有用的话,就要看看IDEA中的out或模块中的target目录里面是否存在对应的静态资源。若是没有,可以使用以下的解决方法。

    (1)在File下的Project Structure点击,选择Artifacts.

    (2)到Artifacts -> Output Layout下点击下面的图标。

$ is not defined...js加载失败问题

    (3)接着下面的步骤。

$ is not defined...js加载失败问题
$ is not defined...js加载失败问题

    (4)重启Tomcat即可。

        上述是自己遇到该问题总结出来的解决方法,我也是在用最后一种方法才解决的,但是具体问题具体分析。