jquery 缺少物件 錯誤
阿新 • • 發佈:2019-01-28
最近這幾天寫前端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位置
至此,問題應該能解決了。
如有錯誤觀點,歡迎指正。