[英]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 的键。
查看数组的键会给你0
、 1
等。
payload[key]
然后为您提供未定义的payload[0]
和payload[1]
。
循环访问有效负载中的key in payload
或使用Object.keys(payload).forEach(...)
(或Object.entries(payload).forEach
,因为无论如何您都需要密钥和值)。
for... in
已经循环遍历键,因此key
变为0
和1
,但当然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.