在提交 ItemEdit 表单之前,我正在使用 Stripe.js 尝试检索付款来源的 token 。我能够停止表单提交并获取 token ,但我试图弄清楚如何在 AJAX 请求完成(成功)后再次调用提交操作。现在我正在使用 form.submit()
,但它想要刷新整个页面并给我一个丑陋的警报(离开/留下)。有人知道更流畅的方法吗?
(function($) {
$.entwine('ss', function($) {
var form = $('#Form_ItemEditForm');
var field = $('input.stripetokenfield');
$(form).entwine({
onsubmit: function(e) {
var key = getStripeFieldByData(form, 'key');
var token_field = getStripeFieldByData(form, 'token');
Stripe.setPublishableKey(key.val());
Stripe.card.createToken(form, stripeResponseHandler);
e.preventDefault();
return false;
}
});
});
function getStripeFieldByData(form, string) {
var field = $(form).find('[data-stripe="' + string + '"]');
return field;
}
function stripeResponseHandler(status, response) {
var form = $('#Form_ItemEditForm');
if(response.error) {
form.find('.payment-errors').text(response.error.message);
}else {
var token_field = getStripeFieldByData(form, 'token');
token_field.val(response.id);
if(token_field.val()) {
form.get(0).submit();
}
}
}
})(jQuery);
最佳答案
如果您的目标是发出请求并避免刷新页面,这很可能通过使用 jQuery POST 发送表单数据来完成。
$.post(form.attr('action'), form.serialize(), function(response){
// do something here on success
});
如果你想刷新,你可以用 window.location.reload()
手动刷新或使用 window.location.replace()
重定向用户或 window.location.href
到着陆页。
关于javascript - 从 javascript 调用 ItemEditForm 上的保存操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41819485/