使用$.post从JS向PHP传变量时返回值为0的问题求助
解决$.post传递变量到PHP返回0的问题
看起来你在FullCalendar的双击事件里尝试用$.post把event的ID传给PHP,但得到了返回值0。我来帮你排查几个常见的问题点:
1. 先确认PHP端是否正确接收并响应请求
首先,你需要在当前页面的PHP代码里专门处理这个POST请求。如果PHP没有针对POST请求做逻辑处理,可能会默认输出0(或者页面其他无关内容)。你可以在页面顶部添加这段处理逻辑:
<?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { // 检查是否收到idafevent参数 if (isset($_POST['idafevent'])) { $eventId = $_POST['idafevent']; // 这里可以写你需要的业务逻辑,比如查询数据库、返回处理结果 echo "成功收到事件ID:" . $eventId; exit; // 处理完POST请求后直接退出,避免输出页面其他内容 } else { echo "缺少idafevent参数"; exit; } } ?>
2. 完善$.post的回调函数,查看真实返回内容
你的代码只发送了请求,但没有处理返回结果,很难定位问题。建议加上回调和错误处理,在浏览器控制台查看具体返回:
$.post(window.location, {idafevent: event.id}, function(response) { console.log("PHP返回内容:", response); // 这里可以根据返回结果做后续操作 }).fail(function(xhr, status, error) { console.error("请求失败原因:", error); });
按下F12打开浏览器开发者工具,查看控制台的输出,就能明确是PHP主动返回了0,还是请求本身出错了。
3. 检查是否存在CSRF拦截
如果你的项目用了WordPress、Laravel这类框架,默认会开启CSRF保护,直接发送POST请求会被拦截,导致返回错误或0。这种情况需要在请求里带上CSRF令牌:
比如WordPress的处理方式:
<!-- 先在页面HTML里输出CSRF令牌 --> <?php wp_nonce_field('event_post_action', 'event_nonce'); ?>
// JS里获取令牌并发送 var nonce = $('#event_nonce').val(); $.post(window.location, { idafevent: event.id, _wpnonce: nonce }, function(response) { console.log(response); });
其他框架请按照对应文档添加CSRF验证参数。
4. 确认event.id是否为有效值
有时候可能event.id并不是你预期的数值(比如undefined、空值),建议在发送请求前先打印确认:
console.log("当前事件ID:", event.id); $.post(window.location, {idafevent: event.id}, function(response) { console.log(response); });
如果event.id为空,PHP端接收不到参数,也可能返回默认值0。
先从这几个方向排查,应该能找到问题所在。
内容的提问来源于stack exchange,提问作者Anders
相关产品推荐
相关产品推荐

