PHP同页面获取表单POST值的问题排查及解决
解决Undefined index: lamp的问题
你遇到的问题主要是表单没正确提交,加上PHP的判断逻辑有小疏漏,我来一步步帮你修复:
1. 修正PHP的判断逻辑
你现在用isset($_POST)来判断是否有POST数据,但$_POST作为超全局数组,不管有没有提交数据它都存在,所以这个判断永远为true。当表单没提交时,$_POST['lamp']自然不存在,就会触发Undefined index的报错。
修改后的PHP代码应该检查具体的参数是否存在:
if (isset($_POST['lamp'])) { $pg_type = $_POST['lamp']; echo $pg_type; die; }
2. 让select切换时自动提交表单
你的select绑定了onchange="gender(this)"事件,但这个函数里没有提交表单的逻辑,用户切换选项时,表单根本没发送POST请求,$_POST里自然没有lamp的值。
给你的JavaScript函数加上表单提交的代码:
function gender(selectElement) { // 获取表单元素并提交 document.getElementById('list').submit(); }
3. 优化表单的默认选项(可选但更严谨)
你那个隐藏的默认option最好加上disabled和selected属性,同时补上空value(虽然是隐藏状态,但能避免一些意外情况):
<form action="" id='list' name="list" class="form-inline" method="POST"> <div class="select"> <select name="lamp" id="lamp" onchange="gender(this)" style="background:transparent"> <option id='gender' hidden="hidden" disabled selected value="">Gender</option> <option value="0">Boy's</option> <option value="1">Girl's</option> </select> </div> </form>
这样修改后,用户切换性别选项时表单会自动提交,PHP就能正确获取到lamp的值,也不会再出现Undefined index的报错了。
内容的提问来源于stack exchange,提问作者rajkumar
相关产品推荐
相关产品推荐

