繁体   English   中英

表单提交html和js

[英]Form submit html and js

在与 recaptcha 核对后,我想将信息发送到另一个页面。 如果我在控制台中打印它们是可见的信息,但如果我发送它并且我通过邮寄获得它们是未定义的

 var payload = { name: '<?php echo $name?>', email: '<?php echo $email?>' }; console.table(payload); var form = document.createElement('form'); form.style.visibility = 'hidden'; // no user interaction is necessary form.method = 'POST'; // forms by default use GET query strings form.action = 'test.php'; for (key in Object.keys(payload)) { var input = document.createElement('input'); input.name = key; input.value = payload[key]; form.appendChild(input); // add key/value pair to form } document.body.appendChild(form); // forms cannot be submitted outside of body form.submit(); // send the payload and navigate

您在控制台中打印的内容与您在表单中插入的内容不同。

Object.keys为您提供了一个数组,其中包含来自 object 的键。

key in循环遍历 object 的键。

查看数组的键会给你01等。

payload[key]然后为您提供未定义的payload[0]payload[1]


循环访问有效负载中的key in payload或使用Object.keys(payload).forEach(...) (或Object.entries(payload).forEach ,因为无论如何您都需要密钥和值)。

for... in已经循环遍历键,因此key变为01 ,但当然payload[0]undefined 我建议使用Object.keys(payload).forEach(...)代替:

 var payload = { name: '<?php echo $name?>', email: '<?php echo $email?>' }; console.table(payload); var form = document.createElement('form'); //form.style.visibility = 'hidden'; // no user interaction is necessary form.method = 'POST'; // forms by default use GET query strings form.action = 'test.php'; Object.keys(payload).forEach((key) => { var input = document.createElement('input'); input.name = key; input.value = payload[key]; form.appendChild(input); // add key/value pair to form }); document.body.appendChild(form); // forms cannot be submitted outside of body //form.submit(); // send the payload and navigate

我删除了visibility: hidden ,因此我们可以实际看到表单中发生的情况。 在更改为forEach()之前,输入包含undefined ,因此这已经指出了从payload获取正确值的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM