Функция успешного вызова Ajax - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть запрос ajax, и при успешном выполнении метода я пытаюсь вызвать другую функцию, но, похоже, она не работает.на консоли нет ошибок.

Я получаю сообщение об успехе, и все остальные вызовы после этой функции также работают.

вот мой запрос ajax.

$.ajax({
    url: '/tracking/insertrating',
    type: 'post',
    cache:false,
    data: {waybill:waybill,rating:rating,captainId:captainId},
    dataType: 'json',
    success: function(data){

        $('.comments').hide();
        $('.submitrating').hide();
        $('.rating').barrating({
            theme: 'fontawesome-stars',
            hoverState: false,
            readonly: true,
        });

    }
});

Эта функция не вызывается и не действует.тот же вызов функции работает до запроса ajax.

$('.rating').barrating({
    theme: 'fontawesome-stars',
    hoverState: false,
    readonly: true,
});

Ответы [ 3 ]

0 голосов
/ 27 сентября 2018

Это происходит потому, что AJAX является асинхронным, и функция успеха будет выполняться только после получения ответа, поэтому «async: false» заставит код ожидать выполнения функции успеха

  $.ajax({

                            url: '/tracking/insertrating',
                            type: 'post',
                            async:false,/*add this*/                                cache:false,
                            data: {waybill:waybill,rating:rating,captainId:captainId},
                            dataType: 'json',
                            success: function(data){

                              $('.comments').hide();
                              $('.submitrating').hide();
                               $('.rating').barrating({
                theme: 'fontawesome-stars',
                hoverState: false,
                readonly: true,
                });

                            }
                        });

В некоторых версияхjquery async false не будет работать, в этом случае вам нужно привязать функцию к какому-либо другому событию

0 голосов
/ 27 сентября 2018
$('.rating').barrating('destroy');

Это сработало для меня.Спасибо всем за помощь здесь.

0 голосов
/ 27 сентября 2018

Ваше сообщение AJAX не заменяет существующий контент (по крайней мере, из приведенного выше примера кода), поэтому, если .rating элементы уже зарегистрированы, вы не сможете снова вызвать

$('.rating').barrating({ settings })

, потому что попытаетесь повторно- зарегистрируйте элемент управления второй раз, когда он уже зарегистрирован.Вы хотите, чтобы выборочно предназначались для любого нового контента для регистрации элемента управления.Если ваш код пытается зарегистрировать плагин / виджет дважды, это может быть причиной того, что он не работает.

РЕДАКТИРОВАТЬ: Вы также можете уничтожить и воссоздать плагин через API или если плагин поддерживаетсортируйте метод сортировки (проверьте документы), может быть метод, который нужно вызвать, чтобы обновить плагин для элементов, с которыми он связан.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...