提交注册表单无法触发PHP输出Test问题求助
问题原因
通过JS主动调用form.submit()提交表单时,不会自动包含提交按钮的name和值(也就是你的submit2字段),这就导致PHP里isset($_POST["submit2"])判断为false,执行else分支跳转回signup.php,所以你看不到Test!。
解决方案
有两种方法可以解决:
方法一:手动添加隐藏字段模拟submit2
修改你的JS代码,在提交前给表单添加一个name="submit2"的隐藏输入框,确保POST数据里包含这个字段:
const form = document.querySelector('.login-signup'); form.addEventListener("submit", (event) => { event.preventDefault(); validateInputs(); const successFields = form.querySelectorAll(".success"); if (successFields.length === 2) { // 添加隐藏input,让POST数据包含submit2 const submitHidden = document.createElement('input'); submitHidden.type = 'hidden'; submitHidden.name = 'submit2'; submitHidden.value = '1'; // 值随便填,只要存在就行 form.appendChild(submitHidden); form.submit(); } });
方法二:触发原提交按钮的点击事件
如果你的表单里有明确的提交按钮(比如<button type="submit" name="submit2">提交</button>),可以给按钮加个ID,然后在JS里触发它的点击事件,这样提交时会自动带上submit2字段:
const form = document.querySelector('.login-signup'); const submitBtn = document.querySelector('#submit-btn'); // 假设按钮id是submit-btn form.addEventListener("submit", (event) => { event.preventDefault(); validateInputs(); const successFields = form.querySelectorAll(".success"); if (successFields.length === 2) { // 触发按钮点击,模拟用户手动提交 submitBtn.click(); } });
对应的表单提交按钮要加上ID:
<button type="submit" name="submit2" id="submit-btn">提交</button>
验证
修改后再提交表单,PHP就能检测到$_POST["submit2"],执行echo "Test!"的逻辑了。
内容的提问来源于stack exchange,提问作者Nakamura
相关产品推荐
相关产品推荐

