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

JQuery POST请求至PHP文件,$_POST返回空数组问题求助

问题分析:jQuery POST请求后PHP的$_POST为空的原因与解决办法

看起来你遇到了jQuery POST请求后PHP端$_POST为空的问题,我来帮你拆解下核心问题和对应的解决方法:

核心问题所在

你的代码里有两个关键问题导致$_POST返回空数组:

  1. 数据格式与contentType不匹配
    你设置了contentType: "application/json; charset=utf-8",但发送的data只是单纯的字符串sha_id,并非标准JSON对象。而且PHP的$_POST全局变量默认只解析application/x-www-form-urlencoded(表单默认编码)或multipart/form-data格式的请求体,不会自动处理JSON格式的输入内容。
  2. 未传递键值对结构
    即便不用JSON格式,直接传递无键名的字符串,PHP也无法将其映射到$_POST数组中。

两种可行的解决方法

方法一:使用JSON格式发送(适合复杂数据结构)

如果你希望保持JSON格式传递数据,需要同时修改发送端和接收端代码:

  • 发送端:将数据包装为JSON对象并序列化
$(function (){
  $(".commit").click(function(){
    const sha_id = $(this).data("sha");
    $.ajax({
      url : 'commitInfo.php',
      type : 'POST',
      data : JSON.stringify({ sha_id: sha_id }), // 包装为JSON对象并序列化
      contentType: "application/json; charset=utf-8",
      success: function(response){
        console.log(sha_id);
        window.location.replace("commitInfo");
      }
    });
  });
});
  • 接收端:读取原始请求体并解析JSON
$rawInput = file_get_contents('php://input');
$postData = json_decode($rawInput, true);
var_dump($postData); // 此时会输出包含sha_id的数组

方法二:使用默认表单编码(更简单,适合单参数场景)

这种方式更贴合PHP$_POST的默认解析逻辑,修改成本更低:

  • 发送端:移除contentType设置(jQuery默认使用表单编码),并传递键值对形式的数据
$(function (){
  $(".commit").click(function(){
    const sha_id = $(this).data("sha");
    $.ajax({
      url : 'commitInfo.php',
      type : 'POST',
      data : { sha_id: sha_id }, // 键值对结构
      success: function(response){
        console.log(sha_id);
        window.location.replace("commitInfo");
      }
    });
  });
});
  • 接收端:直接使用$_POST即可
var_dump($_POST); // 现在会输出包含sha_id的数组
// 也可以直接获取具体值:echo $_POST['sha_id'];

额外提示

注意你在success回调里的跳转window.location.replace("commitInfo");——这个跳转是一个全新的HTTP请求,和之前的ajax POST请求完全独立,所以跳转后的页面无法通过$_POST获取刚才传递的sha_id。如果跳转后需要用到这个值,建议改成GET参数传递:

window.location.replace("commitInfo?sha_id=" + sha_id);

之后在跳转后的页面用$_GET['sha_id']就能获取到对应值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:42:55