Windows环境PHP站点提交表单触发JScript document未定义报错如何解决
报错根因
你遇到的Microsoft JScript runtime error 'document' is undefined错误,本质是Windows系统的脚本宿主环境(而非浏览器)尝试执行了你的main.js文件。该环境没有浏览器提供的document、window等全局对象,因此触发报错。Mac环境下的Web服务器默认不会将.js文件作为服务端脚本执行,所以功能正常。
仅提交第一个表单时触发的原因:你提交第一个表单跳转到submit.php后,要么是资源相对路径引用错误触发了服务端的异常解析逻辑,要么是你使用的IIS服务器默认配置了.js后缀的服务端解析规则,将静态JS文件当成ASP脚本执行。
无需npm的解决方案
方案1:修复IIS处理程序映射(适用于用IIS部署站点的场景)
- 打开IIS管理器,定位到你的站点
- 进入「处理程序映射」设置页
- 查找后缀为
.js的映射项,如果有映射到asp.dll或JScript.dll的规则,直接删除该规则 - 重启IIS站点,清空浏览器缓存后重试
方案2:内嵌JS代码到页面(通用快速解决方案)
直接把main.js的代码内嵌到HTML的<script>标签中,避免服务端解析外部.js文件:
- 删除页面中
<script src="main.js"></script>这行代码 - 在原位置插入
<script> 把整个main.js的代码粘贴到这里 </script>即可
方案3:替换为绝对路径引用资源
如果是路径跳转导致的资源引用异常,把所有JS资源的相对路径替换为站点根目录的绝对路径即可,示例:
<!-- 替换前 --> <script src="./plugin/sweetalert/sweetalert.min.js"></script> <script src="./plugin/webcamjs/webcam.min.js"></script> <script src="main.js"></script> <!-- 替换后,路径前缀对应你的站点根路径 --> <script src="/plugin/sweetalert/sweetalert.min.js"></script> <script src="/plugin/webcamjs/webcam.min.js"></script> <script src="/main.js"></script>
内容的提问来源于stack exchange,提问作者swamper
相关产品推荐
相关产品推荐

