【发布时间】:2018-01-28 14:16:57
【问题描述】:
这将是一个很长的问题?
如您所见,我在此 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
;
}
})
}
但希望我足够清楚。请不要投反对票,澄清的建议会很好。
【问题讨论】:
-
你可以在这里添加你的html代码吗?
-
感谢您的评论。我在这里附上了一个jsfiddle:jsfiddle.net/ymum9ueg
-
@CalixteSimeon 小提琴没有告诉我们表单在提交时会做什么。是否有使用 JavaScript 附加的事件?你能包括那些吗?
-
我没有看到小提琴中发生这种情况。在提交信用卡表单时,它只提交与该表单相关的参数。我错过了什么吗?
-
@cdoshi 我也看不到。在这两种表单上都必须有 JavaScript 挂钩到“onsubmit”事件。 OP尚未发布该JS:p
标签: javascript jquery html ajax forms