HTML表单提交后无法发邮件及jQuery加载错误求助
问题根源及解决方案
核心问题:jQuery未正确加载
你的两个控制台错误是连锁触发的:
- Mixed Content错误:当前页面通过HTTPS协议加载,但引入的jQuery脚本用了HTTP协议(
http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.12.0.min.js)。现代浏览器会拦截HTTPS页面中的HTTP资源请求,导致jQuery完全加载失败。 $ is not defined错误:因为jQuery没加载成功,所有依赖$(jQuery别名)的代码(比如$(document).ready块里的表单提交逻辑)无法执行,这就是点击submit按钮无反应的直接原因。
修复步骤
1. 修复jQuery引入方式
把jQuery的引入链接改成HTTPS协议,或者用协议相对路径(自动适配当前页面的HTTP/HTTPS):
<!-- 方案1:改用HTTPS链接 --> <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.12.0.min.js"></script> <!-- 方案2:协议相对路径 --> <script src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.12.0.min.js"></script>
务必把这段脚本引入代码放在你的自定义JavaScript代码之前,保证jQuery先加载完成。
2. 验证前端逻辑执行
修复jQuery加载问题后,刷新页面,查看控制台是否还有$ is not defined错误。如果错误消失,再测试submit按钮:
- 若点击仍无反应,检查自定义JS中表单提交的绑定逻辑是否正确,比如是否正确监听了表单的
submit事件,是否存在阻止默认提交后未执行异步请求的情况。 - 可以在
$(document).ready块开头加测试代码,确认jQuery正常运行:
$(document).ready(function() { console.log("jQuery加载正常"); // 你的表单提交逻辑... });
3. 后端PHP脚本排查(前端修复后仍无法发邮件)
如果前端能正常触发提交请求,但邮件未发送,检查mail.php的以下几点:
- 服务器是否配置了邮件发送功能(比如PHP的
mail()函数是否可用,或是否使用了SMTP类库)。 - 表单字段的
name属性是否和PHP接收的参数一致,比如PHP用$_POST['email'],对应表单input必须有name="email"。 - 在
mail.php开头开启错误提示,排查脚本错误:
error_reporting(E_ALL); ini_set('display_errors', 1);
内容的提问来源于stack exchange,提问作者Arie
相关产品推荐
相关产品推荐

