无法获取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
相关产品推荐
相关产品推荐

