Ajax, DOM и submit = обновление страницы - PullRequest
0 голосов
/ 28 апреля 2018

Я проверил подобные вопросы, провел много исследований, задал несколько человек в течение 2 месяцев, но у меня все еще есть проблема, иногда я (не всегда, и я не могу воспроизвести) обновляю страницу при отправке формы DOM здесь в действии Здесь у вас также есть ссылка для текстового веб-сайта внизу. После нажатия он должен перейти на платежный шлюз, не обновляя.

Так что в других постах я видел, что было бы неплохо поместить e.preventDefault() и return false, что я и сделал, чтобы избежать обновления формы, но я все еще получаю обновление! Есть идеи, что еще попробовать? Я сделал что-то не так?

Я думаю, что-то связано с DOM, submit или 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 голосов
/ 28 апреля 2018

Раствор 1

Изменить это:

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

К этому:

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

Это решило мою похожую проблему с click event ..

Я изменил это:

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

К этому:

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

И это решило мои проблемы

Решение 2

Добавьте код в это:

document.addEventListener("DOMContentLoaded", function(event) { 
    //INSERT CODE HERE
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...