1. 程式人生 > >jquery 缺少物件 錯誤

jquery 缺少物件 錯誤

最近這幾天寫前端jquery用IE除錯老是出現“缺少物件”錯誤,終於找出來原因了。

網友說,”缺少物件“99%的原因是jquery引用路徑訪問不到。於是我就去看了我的jquery引用路徑,果然問題就出在這裡。

柯南說:真相只有一個。除去一切不可能情況之後剩下的,無論多麼不合理,那就是真相。

眾所周知

一、 js、html、圖片等靜態資源在springMVC裡是不能被直接訪問到的,因為被Dispatcherservlet攔截了。要想訪問需要在spring-mvc.xml中配置。

二、 jsp是不被Dispatcherservlet攔截的,所以使用者可以直接通過url訪問到jsp檔案,為了不讓使用者直接訪問jsp,就把jsp放在WEB-INF下,因為web-inf下的檔案不能被直接訪問,只能通過controller訪問。

說道這裡,大部分jquery引用不到的原因也就清晰了

1 把jquery庫放在了WEB-INF下

2 jquery庫沒有放在WEB-INF下,但是沒有在spring-mvc.xml中為它所在的資料夾配置靜態資源訪問

<mvc:resources mapping="/js/**" location="/js/" />

3 由於相對路徑不熟悉,引用了錯誤的路徑

這是錯誤的程式碼:

<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<!DOCTYPE html>
<html>
<head>
    <script src="WEB-INF/jquery-3.2.1.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            $("button").click(function(){
                $("p").toggle();
            })
        });
    </script>
</head>
<body>
<button type="button">切換</button>
<p>這是一個段落。</p>
<p>這是另一個段落。</p>

</body>
</html>

這是錯誤的存放位置:

修改後的程式碼

<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<!DOCTYPE html>
<html>
<head>
    <script src="js/jquery-3.2.1.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            $("button").click(function(){
                $("p").toggle();
            })
        });
    </script>
</head>
<body>
<button type="button">切換</button>
<p>這是一個段落。</p>
<p>這是另一個段落。</p>

</body>
</html>


修改後的jquery位置


至此,問題應該能解決了。

如有錯誤觀點,歡迎指正。