如何向PHP文档传值并跳转?JQuery传POST参数跳转后接收报错
问题根本原因
你触发报错是因为发起了两次独立的请求到orderdetail.php:
- 第一次是
$.post()发起的异步POST请求,这次请求确实携带了id参数,后端本次处理可以正常拿到id值,但是这次请求的返回结果没有被你用到页面渲染上 - 第二次是
window.location.href触发的页面跳转请求,这是标准的GET请求,没有携带任何POST参数,你看到的页面报错就是这次GET请求返回的结果,此时$_POST['id']自然不存在
可行解决方案
你可以根据业务需求选择以下任意一种方案修复:
方案1:用表单提交替代AJAX+跳转逻辑(推荐,符合原生POST跳转逻辑)
直接构造动态表单发起POST跳转,不需要多余的AJAX请求:
$(document).on('click', '.orderdetail', function () { var _id = $(this).attr("id"); // 构造临时表单 var form = $('<form method="post" action="orderdetail.php"></form>'); form.append('<input type="hidden" name="id" value="' + _id + '">'); $('body').append(form); form.submit(); })
PHP代码不需要修改,同时建议加参数存在性判断避免异常:
// orderdetail.php if (isset($_POST['id'])) { echo $_POST['id']; } else { // 自定义参数缺失的处理逻辑 echo "参数缺失"; }
方案2:跳转时携带GET参数
如果你不需要严格用POST方式传递参数,可以把id放到跳转的URL参数中:
$(document).on('click', '.orderdetail', function () { var _id = $(this).attr("id"); // 直接跳转带参数,不需要额外AJAX请求 window.location.href = "orderdetail.php?id=" + _id; })
PHP代码调整为从GET参数取值即可:
echo $_GET['id']; // 或者用$_REQUEST兼容两种传参方式 // echo $_REQUEST['id'];
内容的提问来源于stack exchange,提问作者mhm.map
相关产品推荐
相关产品推荐

