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

jQuery AJAX发送POST数据正常但PHP无法接收参数问题咨询

问题核心原因

  • 你触发AJAX请求时确实以POST方式给detalle_evento.php传了id_evento参数,但是你在success回调里第一行就执行了location.href='detalle_evento.php',这是跳转行为,属于GET请求,不会携带之前AJAX提交的POST参数,所以跳转后的页面自然拿不到值输出为空。
  • 弹窗一闪而逝也是因为跳转操作直接刷新了页面,当前页面的JS上下文被销毁,刚弹出的alert就被强制关闭了。
  • 你可以在开发者工具的网络面板里找到对应AJAX请求的返回记录,实际上这次请求已经拿到了带id_evento输出的结果,只是你跳转走了没有用到这个返回的response。

解决方案

根据你的需求可以选择两种修改方向:

方案1:不需要异步提交,直接跳转传参

如果你的需求就是点击按钮后跳转到详情页展示数据,完全不需要用AJAX,直接把参数放在URL里用GET方式传即可,修改JS代码:

$(document).ready(function() {
    $('#tabla_eventos').on('click', '#guardar_bt', function(e) {
        e.preventDefault(); 
        var filaactual = $(this).closest("tr"); 
        var id_evento = filaactual.find("td:eq(0)").html(); 
        // 直接跳转携带GET参数
        location.href = 'detalle_evento.php?id_evento=' + id_evento;
    });
});

对应PHP修改接收逻辑,加参数存在性判断避免报错:

<h1>
<?php
echo isset($_GET['id_evento']) ? $_GET['id_evento'] : '参数缺失';
?>
</h1>

方案2:保留AJAX异步逻辑,不跳转页面

如果你需要无刷新提交数据,把返回结果展示在当前页,就去掉跳转逻辑,直接用AJAX返回的response渲染当前页面:

$(document).ready(function() {
    $('#tabla_eventos').on('click', '#guardar_bt', function(e) {
        e.preventDefault(); 
        var filaactual = $(this).closest("tr"); 
        var id_evento = filaactual.find("td:eq(0)").html(); 
        var parametros = {
            id_evento : id_evento
        };
        $.ajax({
            method:  'POST', 
            data:  parametros, 
            url:   'detalle_evento.php', 
            success:  function (response) {
                        // 把返回的内容插入到当前页的指定容器即可,比如提前在页面加一个id为result的div用来承载结果
                        $('#result').html(response);
                        alert('bien'+' '+id_evento);
                      }
        });
    });
});

选择这个方案的话,建议把PHP文件里的完整HTML结构去掉,只返回需要的纯数据内容,避免重复插入完整HTML结构到当前页造成格式混乱。

内容的提问来源于stack exchange,提问作者Diego K.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:39:02