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

提交注册表单无法触发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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 07:07:19