AJAX跳转至PHP文件并传递JS变量失败问题求助
问题分析与解决方案
嘿,我来帮你捋捋为啥ID值拿不到~你的代码里有两个关键问题:
1. 请求方式不匹配
你前端用$.post()发送的是POST请求,但后端id.php里用$_GET['ID']去获取GET参数,这俩根本不是一个通道,自然拿不到值啦。
2. 跳转逻辑矛盾
你在AJAX的回调里执行window.location='id.php',这个跳转是一个全新的GET请求,和之前的POST请求完全无关,所以就算POST成功传递了ID,跳转后的页面也不会带上这个参数。
解决方案一:直接用GET跳转(最适合你的需求)
既然你最终目的是跳转到id.php并传递ID,完全没必要用AJAX POST,直接构造带参数的URL跳转就行,简单直接:
修改前端JavaScript函数:
function clicked(clicked_id){ window.alert("clicked"); window.alert(clicked_id); // 构造带GET参数的URL并跳转 window.location = 'id.php?ID=' + clicked_id; }
后端id.php不用修改,$_GET['ID']就能正常获取到ID值了。
解决方案二:如果确实需要先POST处理数据再跳转
如果你得先通过POST把ID传给后端做一些处理(比如存数据库),再跳转显示,那需要调整前后端代码:
后端id.php修改:
<?php session_start(); // 开启会话用于暂存ID if ($_SERVER['REQUEST_METHOD'] === 'POST') { // 接收POST过来的ID $clickedID = $_POST['ID']; // 这里可以加你的业务逻辑,比如存储数据等 $_SESSION['clickedID'] = $clickedID; // 把ID存在会话里 header('Location: id.php'); // 跳转到显示页面 exit; } else { // GET请求时从会话中取出ID $clickedID = $_SESSION['clickedID'] ?? '未获取到ID'; echo 'here at id.php'; echo $clickedID; // 用完可以销毁会话中的ID,避免下次访问残留 unset($_SESSION['clickedID']); } ?>
前端JavaScript修改:
function clicked(clicked_id){ window.alert("clicked"); window.alert(clicked_id); // 发送POST请求,后端会处理跳转 $.post('id.php',{ID:clicked_id}); }
内容的提问来源于stack exchange,提问作者chowchow
相关产品推荐
相关产品推荐

