PHP中用a标签替代submit按钮后无法获取Form-Data的问题
问题原因与解决方案
为什么a标签无法获取表单数据?
<input type="submit">是表单的原生提交控件,点击它会触发表单的提交动作,严格按照表单指定的method="post",把表单内所有带name属性的控件数据打包成POST请求,发送到action指定的地址。- 而你使用的
<a>标签本质是发起一个GET请求,它只会单纯跳转到目标URL,不会主动携带任何表单内的POST数据,所以PHP的$_POST数组自然拿不到内容。
解决方法
想要保留a标签的外观同时实现表单提交,有两种实用方式:
方法1:通过JS绑定点击事件提交表单
修改a标签的属性,添加点击事件触发表单提交:
<a href="javascript:void(0)" id='guest-link' onclick="document.getElementById('guestin').submit()"> <img src='./img/guest.svg' id='guest-icon' alt='guest'> </a>
- 把
href设为javascript:void(0)避免默认跳转行为,点击时通过JS调用表单的submit()方法,就能按照表单设定的POST方式提交所有数据。
方法2:替换为隐藏样式的submit按钮
把a标签换成原生submit按钮,用CSS调整成你需要的图片外观:
<button type="submit" id='guest-link' style="border: none; background: none; padding: 0; cursor: pointer;"> <img src='./img/guest.svg' id='guest-icon' alt='guest'> </button>
- 这是更贴合表单原生逻辑的做法,不需要依赖JS,仅通过CSS就能保持你想要的视觉效果,同时完美触发POST提交。
额外提示
表单里的guest-id是readonly状态,如果需要给它赋值,建议在PHP生成表单时直接填充数据,或者用JS在表单提交前设置好值,确保该字段数据能正常随POST请求发送到后端。
内容的提问来源于stack exchange,提问作者user18227353
相关产品推荐
相关产品推荐

