【问题标题】:Some of My Input Fields Are Not Submitting我的某些输入字段未提交
【发布时间】:2019-09-25 14:01:41
【问题描述】:

我正在使用 Stripe 作为我的支付网关。在我请求并收到令牌后,我会尝试将表单提交到我的服务器。

问题是;只有令牌回发。我也想获取电子邮件地址。当我单步执行时,当我调用 form.submit() 时,表单的输入值都已正确设置。

所以 - 我想知道我需要在这里寻找什么。是否存在阻止元素数据被提交的属性?对于为什么返回到我的服务器的唯一字段是条带令牌,我有点困惑。

表格已完全填写,但在检索令牌后,有些东西被踢回了我,导致其他一切都变得虚幻。

这一定是我不知道的一些属性或属性 - 但没有谷歌搜索显示任何内容。

请不要因为我不够具体而标记我 - 这是我在不向你们倾倒大量 DOM 层次结构的情况下尽可能具体的。

提前感谢任何可以为我指明正确方向的人。

【问题讨论】:

  • 几种可能性:“返回到我的服务器的唯一字段是条带令牌。” .你确定吗? (#1)如果你还没有这样做,那么使用你的浏览器检查器,在“网络”选项卡上,查看正在完成的“POST”,看看你提交的值是根据你的浏览器而不是服务器. (#2) 帖子是通过表单操作属性完成的:
    还是通过一些自定义的 .js?如果它是通过自定义 .js 完成的,那么请看那里。 JS 可以操纵正在发布的内容。
  • 这实际上是一个好点。我还没有检查客户端的帖子值。好吧 - 我的意思是,不是来自网络选项卡。我去看看 - 谢谢
  • 是的,它只是发送令牌。我将不得不再次遍历所有内容。我一辈子都看不到任何会剥夺该数据或“将其关闭”的东西——如果有这样的事情的话。也许我应该构建一个 js 表单,挂载它,然后提交那个表单。当我弄清楚时,我一定会发布正在发生的事情。

标签: javascript forms stripe-payments submit


【解决方案1】:

这个问题超出了我的范围。 所以 - 这是我的解决方法。我最终以编程方式构建了一个新表单,将数据作为子项重新附加并提交。 老实说,我不知道问题出在哪里 - 但这是一个最后期限的修复。

var formPost = document.createElement("form");
    formPost.setAttribute('method','post');

  var eToken = document.createElement('input');
  eToken.setAttribute('type', 'hidden');
  eToken.setAttribute('name', 'stripeToken');
  eToken.setAttribute('value', token.id);
  formPost.appendChild(eToken);

    var eName = document.createElement('input');
  eName.setAttribute('type', 'hidden');
  eName.setAttribute('name', 'name');
  eName.setAttribute('value', document.getElementById("paxyz-name").value);
  formPost.appendChild(eName);

    var eEmail = document.createElement('input');
  eEmail.setAttribute('type', 'hidden');
  eEmail.setAttribute('name', 'email');
  eEmail.setAttribute('value', document.getElementById("paxyz-email").value);
  formPost.appendChild(eEmail);

    var ePhone = document.createElement('input');
  ePhone.setAttribute('type', 'hidden');
  ePhone.setAttribute('name', 'phone');
  ePhone.setAttribute('value', document.getElementById("paxyz-phone").value);
  formPost.appendChild(ePhone);

    var eZip = document.createElement('input');
  eZip.setAttribute('type', 'hidden');
  eZip.setAttribute('name', 'zip');
  eZip.setAttribute('value', document.getElementById("paxyz-zip").value);
  formPost.appendChild(eZip);

    document.body.appendChild(formPost);

  // Submit the form
  formPost.submit();

【讨论】:

    猜你喜欢
    • 2015-06-17
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    相关资源
    最近更新 更多