javascript - 从 javascript 调用 ItemEditForm 上的保存操作

标签 javascript php silverstripe

在提交 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到着陆页。

文档:jQuery.post()

关于javascript - 从 javascript 调用 ItemEditForm 上的保存操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41819485/

相关文章:

javascript - 在带有十字符号的文本框中搜索结果

php - 将 session 变量插入 MySQL 数据库

php - 如何在yii2中创建传递两个参数的absoluteurl

SilverStripe 3 - 扩展评论表

silverstripe - SS4 中的 Form::buttonClicked 相当于什么?

php - Silverstripe URL 模式 $url_handlers 不工作 - namespace 似乎冲突

javascript - javascript中的 token 替换

javascript - 如何检查某物是否有值(value)

javascript - 参数类型不可分配给类型参数

php - JSON 转义字符