You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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);
  });
});

调试验证步骤

  1. 查看网络请求:打开浏览器开发者工具(F12),切换到「网络」标签,提交表单后检查是否有test.php的请求,查看请求状态、参数是否正确
  2. 后端验证:在test.php中添加代码,输出接收的参数并记录日志,比如:
<?php
// 将接收的POST参数写入日志文件
file_put_contents('request.log', print_r($_POST, true) . "\n", FILE_APPEND);
// 返回参数内容给前端,用于验证
echo json_encode($_POST);
?>
  1. 检查控制台错误:开发者工具的「控制台」标签会显示JS语法或执行错误,能快速定位问题

内容的提问来源于stack exchange,提问作者Welshy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 03:50:24