使用document.forms对象的.submit()提交表单无数据发送问题求助
解决表单submit()方法提交无数据的问题
这个问题的核心原因很明确:直接调用表单的submit()方法时,浏览器不会自动包含提交按钮的name和value参数,而你这个添加购物车的操作正好依赖按钮的add-to-cart=8861参数来让后端识别请求。
给你两个可行的解决方案:
方案1:模拟点击提交按钮(推荐)
既然点击按钮能正常提交并携带参数,那我们直接用JS模拟按钮的点击行为就好,这是最贴合浏览器默认行为的方式:
// 精准定位到你的添加购物车按钮并触发点击 document.querySelector('button[name="add-to-cart"][value="8861"]').click();
如果已经确认表单索引是1,也可以从表单内部查找按钮:
document.forms[1].querySelector('button[name="add-to-cart"]').click();
方案2:手动添加隐藏字段后再submit()
如果一定要用表单的submit()方法,那需要手动把按钮的参数以隐藏输入框的形式添加到表单里,这样提交时就能携带数据了:
const targetForm = document.forms[1]; // 创建一个隐藏input,模拟提交按钮的参数 const cartInput = document.createElement('input'); cartInput.type = 'hidden'; cartInput.name = 'add-to-cart'; cartInput.value = '8861'; // 把隐藏input添加到表单中 targetForm.appendChild(cartInput); // 提交表单 targetForm.submit();
简单总结下:点击按钮提交时,浏览器会自动把按钮自身的参数加入表单数据;但form.submit()是绕过按钮直接提交表单,所以那些按钮参数不会被包含,这就是你页面刷新但没数据的原因啦。
内容的提问来源于stack exchange,提问作者Weoka
相关产品推荐
相关产品推荐

