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

PHP提交按钮Onclick事件含If判断失效问题:基于$categoria变量实现页面跳转的解决方案

问题修复方案

嘿,我帮你找出了代码里的几个关键问题,咱们一步步来修复:

核心错误点

  • PHP变量未输出:你写的<?php $categoria ?>只是引用了变量,但没有把它的值输出到JS代码里,JS拿到的是空内容,判断自然失效。得改成<?php echo $categoria; ?>(或者短标签<?= $categoria ?>,前提是你的PHP配置支持)。
  • 字符串比较缺少引号:JS里比较字符串时,两边都得是字符串类型。原代码里<?php $categoria ?>=='libri'会变成类似libri=='libri',这里左边的libri会被JS当成未定义的变量,而不是字符串,所以判断永远不成立。需要给PHP输出的变量加上单引号,变成'<?php echo $categoria; ?>'。
  • 提交按钮的默认行为干扰:<input type="submit">点击后会默认提交所在的表单,就算你的跳转逻辑执行了,表单提交的页面刷新也会把跳转覆盖掉,导致看起来没反应。

修复后的代码方案

方案一:保留submit按钮,阻止默认提交行为

<input type="submit" name="mySubmit" class="btn btn-lg btn-info" value="+" 
onclick="
  var categoria = '<?php echo $categoria; ?>';
  if (categoria == 'libri') {
    location.href='aggiungiLibro.php?categoria=<?php echo $_GET['categoria']; ?>&stanza=<?php echo $_GET['stanza']; ?>';
  } else if(categoria == 'cosmetici') {
    location.href='aggiungiCosmetico.php?categoria=<?php echo $_GET['categoria']; ?>&stanza=<?php echo $_GET['stanza']; ?>';
  } else if(categoria == 'medicinali') {
    location.href='aggiungiMedicinale.php?categoria=<?php echo $_GET['categoria']; ?>&stanza=<?php echo $_GET['stanza']; ?>';
  } else {
    location.href='aggiungiOggetto.php?categoria=<?php echo $_GET['categoria']; ?>&stanza=<?php echo $_GET['stanza']; ?>';
  }
  return false; // 阻止表单默认提交行为
">

方案二:改成普通button按钮(更推荐,避免表单提交干扰)

如果这个按钮不需要提交表单,直接改成<button>类型会更省心:

<button type="button" name="mySubmit" class="btn btn-lg btn-info" onclick="
  var categoria = '<?php echo $categoria; ?>';
  if (categoria == 'libri') {
    location.href='aggiungiLibro.php?categoria=<?php echo $_GET['categoria']; ?>&stanza=<?php echo $_GET['stanza']; ?>';
  } else if(categoria == 'cosmetici') {
    location.href='aggiungiCosmetico.php?categoria=<?php echo $_GET['categoria']; ?>&stanza=<?php echo $_GET['stanza']; ?>';
  } else if(categoria == 'medicinali') {
    location.href='aggiungiMedicinale.php?categoria=<?php echo $_GET['categoria']; ?>&stanza=<?php echo $_GET['stanza']; ?>';
  } else {
    location.href='aggiungiOggetto.php?categoria=<?php echo $_GET['categoria']; ?>&stanza=<?php echo $_GET['stanza']; ?>';
  }
">+</button>

进阶优化:抽离JS逻辑(更易维护)

为了代码更整洁,你也可以把JS逻辑抽离到单独的<script>标签里:

<script>
function goToAddPage() {
  var categoria = '<?php echo $categoria; ?>';
  var params = '?categoria=<?php echo $_GET['categoria']; ?>&stanza=<?php echo $_GET['stanza']; ?>';
  switch(categoria) {
    case 'libri':
      location.href = 'aggiungiLibro.php' + params;
      break;
    case 'cosmetici':
      location.href = 'aggiungiCosmetico.php' + params;
      break;
    case 'medicinali':
      location.href = 'aggiungiMedicinale.php' + params;
      break;
    default:
      location.href = 'aggiungiOggetto.php' + params;
  }
}
</script>

<!-- 对应按钮 -->
<button type="button" name="mySubmit" class="btn btn-lg btn-info" onclick="goToAddPage()">+</button>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 22:27:43