繁体   English   中英

配对中的第一种形式是通过Ajax发送第二种形式的数据。 为什么?

[英]1st form in pairing is sending 2nd form data via ajax. Why?

这将是那些长期的问题之一?

两个单独的表格嵌套在div中

如您所见,我在此div中嵌套了两个表单。 当我分别在不同时间提交任何一种表单时,它们都通过stripe.js接收令牌,该令牌可以正常工作,付款流程中的其他功能也可以正常工作。 我的问题在这里。 以下是通过#credit-card表单发送到服务器的数据,所有表单数据均已封装,因此不应有溢出。 第一种形式从整个页面发送数据,这导致到数组,因为某些输入标签具有通用名称,所以我的服务器无法解析此信息。 为什么会这样呢?

在此处输入图片说明

如何获取表格以发送自身包含的数据? 这是我当前运行的javascript代码,用于将表单信息发送到服务器:

function stripeTokenHandler(token) {
  // Insert the token ID into the form so it gets submitted to the server
  var form = document.getElementById('credit-card');
  var hiddenInput = document.createElement('input');
  hiddenInput.setAttribute('type', 'hidden');
  hiddenInput.setAttribute('name', 'stripeToken');
  hiddenInput.setAttribute('value', token.id);
  form.appendChild(hiddenInput);
  varray=$(form).serializeArray();////serialize to objects -works-

 $.post("php/stripeApi.php",varray,function(result){


     switch (result){

         case "success":



         break
         ;
         default:
         $("#stripereturn-error").html(result);
         break
         ;




         }



     })

 }
function stripeACHTokenHandler(token) {
  // Insert the token ID into the form so it gets submitted to the server
  var form = document.getElementById('ach');
  var hiddenInput = document.createElement('input');
  hiddenInput.setAttribute('type', 'hidden');
  hiddenInput.setAttribute('name', 'stripeToken');
  hiddenInput.setAttribute('value', token.id);
  form.appendChild(hiddenInput);
  varray=$(form).serializeArray();////serialize to objects -works-

 $.post("php/stripeApi.php",varray,function(result){


     switch (result){

         case "success":



         break
         ;
         default:
         $("#stripereturn-error").html(result);
         break
         ;




         }



     })

 }

但是希望我足够清楚。 请不要投下赞成票,澄清的建议会很好。

您要查看“提交”按钮以及对表单提交执行的操作。

  1. 确保每个表单都有自己的提交按钮和动作。
  2. 如果该操作是JavaScript函数,请确保您使用的选择器选择了正确的格式发送到服务器。

通常,这些问题是由于HTML标记错误或JavaScript在提交操作上输入错误而引起的。

例如,如果您发布的那^ JavaScript代码是这两种形式的操作,那么您将始终发布信用卡形式。

我想说,您可以在选择正确的表单元素之后使用包装功能来提交表单。 如下所示:

// Call this on the Ach form's submit action
function submitAch(){
   var form = document.getElementById('ach');
   submitFormToStripe(form);
}

// Call this on the credit card form's submit action
function submitCreditCard(){
   var form = document.getElementById('credit-card');
   submitFormToStripe(form);
}

function submitFormToStripe(form) {
   var hiddenInput = document.createElement('input');
   hiddenInput.setAttribute('type', 'hidden');
   hiddenInput.setAttribute('name', 'stripeToken');
   hiddenInput.setAttribute('value', token.id);
   form.appendChild(hiddenInput);
   varray=$(form).serializeArray();////serialize to objects -works-

   $.post("php/stripeApi.php",varray,function(result)
}

也可以在此处查看表单文档。

暂无
暂无

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

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