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

页面间参数传递问题求助: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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:17:41