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

如何在PHP不同页面间传递变量,点击按钮获取对应商品信息

现有代码核心问题

  • 按钮调用test()函数时未传入当前商品的PartsID,函数拿到的是空值
  • 跳转逻辑错误:你需要跳转到新页面展示详情,完全不需要使用AJAX,现有代码中AJAX请求携带了ID,但跳转时没有把ID拼到跳转地址里,window.location.assign("pageContent.php").innerHTML属于无效语法
  • script标签放在while循环内,每渲染一个商品就重复定义一次test函数,会产生函数冲突

最优实现方案(无需AJAX)

你需要的是点击后跳转带ID的详情页,直接跳转带参是最简洁稳定的方案,也支持用户保存、分享详情页链接。

修改content.php

  1. 将script标签移出循环,整个页面仅定义一次函数
  2. 按钮点击事件传入当前商品的PartsID
  3. 简化跳转逻辑,直接拼接ID到跳转地址

修改后代码如下:

<?php
$stmt = $pdo->query("SELECT * FROM Parts");    
while ($product = $stmt->fetch(PDO::FETCH_ASSOC)) {
?> 
<td>
  <button type="button" class="testButton" onclick="test(<?php echo $product['PartsID'];?>)">
    <!-- 建议这里也动态输出商品缩略图,不要写死路径 -->
    <img src="images/<?php echo $product['ImageFileName'];?>" alt="商品缩略图">
  </button>
</td>
<td class="td-manufacturer">
  <h6>MANUFACTURER</h6>
  <p><?php echo $product["Manufacturer"];?></p>
</td>
<?php } ?>

<!-- 脚本放在循环外,页面底部即可 -->
<script type="text/javascript">
function test(itemid) {
  // 直接跳转带ID的详情页,无需AJAX
  window.location.href = "pagecontent.php?id=" + itemid;
}
</script>

修改pagecontent.php

  1. 先获取GET参数的ID,做合法性校验
  2. 使用PDO预处理查询防止SQL注入,拿到对应商品数据
  3. 增加异常判断,避免ID无效时页面报错

修改后代码如下:

<?php
// 先获取ID并校验
$partId = isset($_GET['id']) ? intval($_GET['id']) : 0;
if ($partId <= 0) {
  die("无效的商品ID");
}

// 预处理查询商品信息,防止SQL注入
$stmt = $pdo->prepare("SELECT * FROM Parts WHERE PartsID = ?");
$stmt->execute([$partId]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$row) {
  die("商品不存在");
}
?>

<div class="productInfo">
  <h2 class="productTitle"><?php echo $row["PartTitle"];?></h2>
</div>

<table>
  <tr>
    <td><?php echo $row["Availability"];?></td>
    <td><?php echo $row["Price"];?></td>
  </tr>
</table>

可选方案:AJAX无刷新加载

如果你不需要跳转页面,要在当前页局部加载详情,才需要使用AJAX,此时不需要跳转逻辑,直接把返回的内容插入到当前页的指定容器即可。

内容的提问来源于stack exchange,提问作者09jesses

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:54:05