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
相关产品推荐
相关产品推荐

