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

无法获取JS发送的数据,请求排查AJAX提交saveId至save.php的异常

问题排查与修复方案

嘿,我一眼就瞅到问题所在了——你的AJAX请求里data参数的格式不符合POST请求的要求,导致服务器没法识别你传的数值!

核心问题

当用POST方式发送数据时,jQuery需要你传递带键名的键值对对象(或者符合key=value格式的字符串),但你直接传了一个纯数值248。服务器端(比如PHP)接收POST数据时,是通过键名来提取值的,没有键名的话,它根本不知道这个248对应的是什么字段,自然就收不到。

修复代码

先改前端的AJAX请求,把数值包装成带键名的对象:

$(".save_post").on("click", function() { 
    var saveId = $(".my_post_id").attr("data-id"); 
    console.log(saveId); 
    $.ajax({ 
        url: "save.php", 
        data: { post_id: saveId }, // 这里给数值加个键名,比如post_id
        type: 'POST', 
        success: function(json_object) { 
            console.log(json_object); 
            $(".save_post").text("Data has been saved."); 
        }, 
        error: function(json_object) { 
            console.log(json_object); 
            $(".save_post").text("Failed to save data !"); 
        } 
    }); 
});

然后对应调整你的save.php,通过键名来获取数据:

<?php
// 用键名post_id来接收数据
$post_id = $_POST['post_id'];
// 这里写你的保存逻辑,比如存入数据库之类的
// 最后返回响应
echo json_encode(['status' => 'success', 'received_id' => $post_id]);
?>

验证小技巧

你可以打开浏览器的开发者工具(按F12,切换到Network面板),点击按钮后查看这个POST请求的Form Data部分,就能看到发送的数据是不是post_id=248这种正确的格式了。

额外补充(如果需要发JSON格式)

要是你想发送JSON格式的数据,那得额外设置contentType,同时把数据转成JSON字符串:

$.ajax({ 
    url: "save.php", 
    data: JSON.stringify({ post_id: saveId }),
    type: 'POST',
    contentType: 'application/json', // 必须设置这个
    // ...其他配置不变
});

这时候服务器端就得用file_get_contents('php://input')来接收,再转成JSON对象:

<?php
$raw_data = file_get_contents('php://input');
$data = json_decode($raw_data, true);
$post_id = $data['post_id'];
// 后续处理...
?>

内容的提问来源于stack exchange,提问作者rob.m

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:31:41