CodeIgniter中JS文件无法生效求助:同方法CSS可正常加载
嘿,我之前也碰到过CodeIgniter里本地JS加载失效的情况,结合你说CSS正常、CDN JS能用的情况,大概率是路径或者配置的问题,给你几个排查方向和解决方案:
先确认JS文件的路径写法是否正确
CSS能正常加载说明基础路径配置没问题,但JS的路径写法容易踩坑。CodeIgniter里推荐用框架的URL辅助函数生成绝对路径,避免相对路径出错:<!-- 不推荐的相对路径写法,易受页面层级影响 --> <script src="assets/js/main.js"></script> <!-- 推荐用base_url()生成绝对路径 --> <script src="<?php echo base_url('assets/js/main.js'); ?>"></script>记得先在
application/config/config.php里把$config['base_url']设置为你的项目根路径(比如http://your-project-domain.com/),不要留空。检查JS文件的位置与服务器权限
确认JS文件确实放在你指定的目录下(比如assets/js/),同时服务器对该文件及文件夹有读取权限(一般设置为755权限即可)。可以直接在浏览器地址栏输入JS的绝对路径(比如http://your-project-domain.com/assets/js/main.js),如果打不开,要么是路径错误,要么是权限不足。排查URL重写(.htaccess)的影响
如果你用了.htaccess去掉URL里的index.php,可能会导致静态资源被框架路由拦截。可以在.htaccess里添加排除规则,让服务器直接返回存在的静态文件:RewriteEngine On # 排除存在的文件和目录,直接返回 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 其他请求走CodeIgniter路由 RewriteRule ^(.*)$ index.php/$1 [L]查看浏览器控制台的错误提示
按F12打开开发者工具,切换到Console标签,看看有没有404错误(文件找不到)或者JS语法报错。如果是404,重点排查路径;如果是语法错误,那就是JS文件本身的问题,和加载无关。临时排查框架安全设置的影响
极少数情况下,全局XSS过滤可能影响JS文件输出,可以暂时把application/config/config.php里的$config['global_xss_filtering']设为FALSE调试,问题解决后记得改回来,保障安全。
你提到Bootstrap CDN的JS能用,说明浏览器加载JS的功能正常,问题肯定出在本地JS的路径、权限或服务器配置上,按上面的步骤排查应该能解决。
内容的提问来源于stack exchange,提问作者Zeeshan Haider

