这将是一个长期的问题吗?
正如您所看到的,我在这个div中嵌套了两种形式。当我在不同的时间提交任何一个表单时,他们都通过stripe.js来接收一个令牌工作正常,其他功能在付款流程中工作正常。我的问题在这里。下面是通过表单#credit-card发送到服务器的数据,所有表单数据都被封装,所以不应该有溢出,但是,有。表单1从整个页面发送数据,这导致数组,因为某些输入标签具有通用名称,我的服务器无法解析此信息。为什么会这样?
如何让我的表单只发送自己包含的数据? 这是我当前运行的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
;
}
})
}
但希望我足够清楚。请不要下选票,澄清的建议会很好。
答案 0 :(得分:0)
您希望查看提交按钮以及在表单提交时执行的操作。
这些问题通常会导致错误的HTML标记或在提交操作中运行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)
}