页面间参数传递问题求助:PHP与JS代码报错排查及修正
我来帮你搞定这个参数传递的问题!你的代码里有好几处关键错误,咱们一步步排查修复:
问题分析与修复步骤
1. 前端JS的核心问题
你当前的JS代码犯了两个致命错误:
- 错误地把
#employee-grid的HTML内容当成参数传递,而不是你实际需要的员工编号(no) - 同时混用了
$.post和window.location.href,这完全没必要——跳转页面直接用GET传参就行,POST在这里是多余的操作
修复后的JS代码
首先假设你的表格行(<tr>)里,每个员工的no是存在某个元素的data-no属性里,或者是在第一个单元格中,我们调整代码如下:
function addRowHandlers() { // 给目标表格下的每一行绑定点击事件(修正原选择器的空格问题) $("#employee-click tr").on('click', function() { // 方式1:如果你的<tr>标签带了data-no属性,比如 <tr data-no="123"> const employeeNo = $(this).data('no'); // 方式2:如果no存放在第一个<td>里,比如 <td>123</td> // const employeeNo = $(this).find('td:first').text().trim(); // 直接跳转到详情页并传递编号参数 window.location.href = `detail.php?no=${employeeNo}`; }); } // 记得在DOM加载完成后调用绑定函数 $(document).ready(function() { addRowHandlers(); });
关键说明:
- 去掉了多余的
tbody.each循环,直接给所有行绑定事件更高效 - 传递的是员工编号(纯数字),这才是PHP后端需要的有效参数
- 删除了无用的
$.post请求,跳转页面用GET传参更直接
2. 后端PHP的问题
你的PHP代码有三个严重问题:
- 使用了PHP早已废弃的
mysql_*扩展,该扩展在PHP7+中已完全移除 - 存在高危SQL注入漏洞,直接把用户传入的
$_GET['no']拼进SQL语句 - 代码语法不完整(最后一行缺少分号)
修复后的PHP代码(使用mysqli扩展)
<?php // 先处理参数,强制转为整数避免非法输入 $no = isset($_GET['no']) ? (int)$_GET['no'] : 0; // 引入数据库连接(确保dbconnect.php用的是mysqli连接) include 'dbconnect.php'; // 使用预处理语句彻底杜绝SQL注入 $query = "SELECT no, svcno, pangkat, name FROM av WHERE no = ?"; $stmt = mysqli_prepare($conn, $query); mysqli_stmt_bind_param($stmt, "i", $no); // "i"表示参数为整数类型 mysqli_stmt_execute($stmt); $result = mysqli_stmt_get_result($stmt); $row = mysqli_fetch_assoc($result); // 输出详情数据(示例) if ($row) { echo "员工编号:" . $row['no'] . "<br>"; echo "姓名:" . $row['name'] . "<br>"; echo "职级:" . $row['pangkat'] . "<br>"; echo "服务编号:" . $row['svcno'] . "<br>"; } else { echo "未找到对应员工的信息"; } // 关闭数据库资源 mysqli_stmt_close($stmt); mysqli_close($conn); ?>
关键说明:
- 强制把
$no转为整数,避免非数字参数干扰 - 使用预处理语句彻底解决SQL注入风险
- 替换了废弃的
mysql_*函数,改用支持现代PHP版本的mysqli扩展 - 补充了语法缺失部分,增加了数据不存在的友好提示
3. 额外注意事项
- 确保你的表格行正确携带员工编号:比如在生成表格时给每个
<tr>加上data-no="<?php echo $row['no']; ?>",方便前端获取 - 检查
dbconnect.php里的数据库连接是否改为mysqli_connect,如果原来用的是mysql_connect需要同步修改 - 测试时可以直接访问
detail.php?no=1(把1换成你数据库中存在的编号),先验证后端是否能正常返回数据,再测试前端点击跳转
内容的提问来源于stack exchange,提问作者adam
相关产品推荐
相关产品推荐

