Ajax,DOM和submit = page refresh

时间:2018-04-27 23:23:57

标签: php laravel

我已经检查了类似的问题,进行了大量的研究,在2个月内询问了几个人,但我仍有问题,我有时(不总是,我无法重现)在提交时刷新页面DOM表单here in action您还可以在底部找到文本网站的链接。点击后它应该转到支付网关,而不是刷新。

所以在其他帖子中我看到放置e.preventDefault()return false这是一个好主意,以避免形式更新,但我仍然得到了刷新!知道还有什么可以尝试吗?我做错了吗?

我认为与DOM,提交或ajax有关。

无意义..我该怎么做的任何提示。为什么只有10%的用户(使用不同的浏览器)

第一个ajax输出,它由以下代码读取:

  'action' => 1,
  'url' => 'https://sis.redsys.es/sis/realizarPago',

$('#form-p ayment')。submit(function(e){             e.preventDefault();

        var data = $('#form-payment').serialize();

        $.ajax({
            url: "{{ url('/pago') }}",
            data: data,
            headers: {
                'X-CSRF-TOKEN': "{{ csrf_token() }}"
            },
            method: 'POST',
            timeout: 20000, // sets timeout to 5000 = 5 seconds
            retryCount: 0, // start retry count
            retryLimit: 1, //will let you retry a determined number of times
            beforeSend: function(data) {
                console.log(data);
            },
            success: function(data) {
                console.log(data);
                if (data.action == 1) {

                    //delete if the form it's already there
                    $('#TDCform').remove();

                    var form = $('<form id ="TDCform" action="' + data.url + '" method="post">' +
                        '<input type="hidden" name="Ds_MerchantParameters" value="' + data.params + '" />' +
                        '</form>');

                    $('#form-payment').after(form);

                    $('#TDCform').submit();
                    //$('#form-payment').off();
                } else {

                    var errorString = 'There's and error.';
                    (".taberrors").html(errorString).fadeIn(2000);
                    $('html, body').animate({
                        scrollTop: $('.taberrors:visible').offset().top - 100
                    }, 1000);

                }
            },
        });

        return false;
    });

1 个答案:

答案 0 :(得分:1)

解决方案1 ​​

改变这个:

$('#form-payment').submit(function(e) { e.preventDefault();

对此:

$('#form-payment').on('submit', function(e) { e.preventDefault();

这解决了点击事件的类似问题..

我改变了这个:

$('#update').click(function(e) {

对此:

$('#update').on('click', function(e) {

这解决了我的问题

解决方案2

将代码添加到此:

document.addEventListener("DOMContentLoaded", function(event) { 
    //INSERT CODE HERE
});