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

求助:AJAX POST向PHP传递数据返回NULL的原因排查

问题分析与解决方案

嘿,我一眼就揪出问题所在啦!你的AJAX请求里多了两个不该在普通键值对数据请求里配置的参数:contentType: false和processData: false。

为什么这会导致PHP返回NULL?

这两个参数是专门为**文件上传场景(使用FormData对象)**设计的:

  • processData: false会阻止jQuery自动把你的对象数据序列化为PHP能识别的URL编码格式;
  • contentType: false会让jQuery不设置请求头的Content-Type字段,PHP无法判断请求中的数据格式,自然就解析不到POST参数了。

快速修复方案

直接删掉这两行配置就行,jQuery会用默认值自动处理普通表单数据:

$.ajax({
    url: '../utilities/atualizar_ferias.php',
    method: 'POST',
    cache: false,
    data: {
        data_inicio: inicio_target.val(),
        data_fim: fim_target.val()
    },
    success: function(resultado){
        console.log(resultado);
    }
})

如果后续需要上传文件(保留那两个参数的场景)

要是你之后要添加文件上传功能,就得把数据包装成FormData对象,这样PHP才能正确解析:

// 构建FormData对象
const formData = new FormData();
formData.append('data_inicio', inicio_target.val());
formData.append('data_fim', fim_target.val());
// 要是有文件的话,比如 formData.append('arquivo', $('#fileInput')[0].files[0]);

$.ajax({
    url: '../utilities/atualizar_ferias.php',
    method: 'POST',
    cache: false,
    contentType: false,
    processData: false,
    data: formData,
    success: function(resultado){
        console.log(resultado);
    }
})

这样修改后,你的PHP代码filter_input_array(INPUT_POST, FILTER_DEFAULT)就能正常获取到传递的参数,不会再返回NULL啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 10:45:27