Показать сообщение отдельно
  #4 (permalink)  
Старый 12.02.2019, 12:13
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,831

Сообщение от rafaello
это все внутри одной функции
Родитель у них общий, да, но переменная pages у вас определяется внутри callback-функции, которую вы передаете в метод "ajax" библиотеки "jQuery". Переменная не может "выглядывать" из своей области видимости.
Определите это переменную в функции get_content, а в callback-функции только измените её значение, тогда она будет доступна в кач-ве параметра для метода "twbsPagination" (однако значение у нее будет то, что вы объявите при инициализации).

Сообщение от rafaello
То есть значение var pages уже определено до пагинации.
У вас запрос асинхронный, поэтому то, что у вас запрос к серверу стоит до построения пагинации не говорит о том, что пагинация начнет строиться после завершения запроса.

Попробуйте запустить такой код и посмотрите консоль:
function get_content(jj) {
    var pages = 0;

    console.log('get_content: make async request');

    jQuery.ajax({
        type: 'POST',
        url: '<?php echo get_template_directory_uri();?>/hxr.php',
        data: 'id=380&page_num=' + jj,
        success: function(data) {
            console.log('get_content: request completed');
            if (data) {
                var rez = JSON.parse(data);

                pages = rez[0].total_pages;

                console.log('get_content: pages variable values was changed');
            }
        }
    });

    console.log('get_content: build pagination with the pages variable value: ' + pages);
    jQuery('#paginationn').twbsPagination({
        totalPages: pages,
        visiblePages: 7,
        onPageClick: function(event, page) {

        }
    });
}
Ответить с цитированием