jQuery获取输入值提交PHP无反馈,请求是否送达存疑求助
问题分析与解决方案
你的代码存在几个关键问题,导致请求可能未正常触发或无法追踪:
核心问题点
- 表单默认提交未阻止:表单提交时会触发页面刷新,AJAX请求可能被中断,根本没发送出去
- jQuery对象错误:
var $form = "#password_change";定义的是字符串而非jQuery对象,调用find()方法会报错(只是未被捕获) - 变量未声明:
$collar没有用var/let/const声明,会变成全局变量,可能引发意外问题 - 缺少错误处理:未配置请求失败的回调,无法得知请求是否出错
修正后的代码
$("#password_change").submit(function(event) { // 阻止表单默认提交行为,避免页面刷新中断AJAX请求 event.preventDefault(); // 正确获取当前表单的jQuery对象 var $form = $(this); // 声明变量并获取输入框值 var $collar = $form.find("input[name='collar']").val(); $.post("test.php", { name: $collar, time: "2pm" }) .done(function(data) { alert("Data Loaded: " + data); }) .fail(function(jqXHR, textStatus, errorThrown) { // 请求失败时弹出错误信息,便于排查 alert("请求出错: " + textStatus + " - " + errorThrown); }); });
调试验证步骤
- 查看网络请求:打开浏览器开发者工具(F12),切换到「网络」标签,提交表单后检查是否有
test.php的请求,查看请求状态、参数是否正确 - 后端验证:在
test.php中添加代码,输出接收的参数并记录日志,比如:
<?php // 将接收的POST参数写入日志文件 file_put_contents('request.log', print_r($_POST, true) . "\n", FILE_APPEND); // 返回参数内容给前端,用于验证 echo json_encode($_POST); ?>
- 检查控制台错误:开发者工具的「控制台」标签会显示JS语法或执行错误,能快速定位问题
内容的提问来源于stack exchange,提问作者Welshy
相关产品推荐
相关产品推荐

