Как настроить получение переменной с другой страницы с помощью Ajax
Здравствуйте всем на форуме!!!
У меня есть плагин пагинации Bootpag, который размещен на странице index.php. Код выглядит вот так: $("#results").load("fetch_pages.php"); //начальная страница $(".pagination").bootpag({ total: <?= $pages; ?>, page: 1, maxVisible: 3, leaps: false, next: 'Вперед »', prev: '« Назад' }).on("page", function(e, num){ e.preventDefault(); $("#results").prepend('<div class="loading-indication"><img src="/ajax-loader.gif" /> Loading...</div>'); $("#results").load('fetch_pages.php', {'page':num} ).hide().fadeIn(500); }); Со страницы fetch_pages.php происходит загрузка выборки из БД с разным колличеством результатов. В плагине есть настройка колличества страниц 'total'... Подскажите как динамически подгружать значение $pages, со страницы fetch_pages.php, чтоб колличество страниц соответствовало объему выборки...? |
$("#results").load("fetch_pages.php"); $.post("fetch_pages.php", { total: true }, function(total) { $(".pagination").bootpag({ total: total, page: 1, maxVisible: 3, leaps: false, next: 'Вперед »', prev: '« Назад' }).on("page", function(e, num){ e.preventDefault(); $("#results").prepend('<div class="loading-indication"><img src="/ajax-loader.gif" /> Loading...</div>'); $("#results").load("fetch_pages.php", { page: num }).hide().fadeIn(500); }); }); Когда к fetch_pages.php делается POST запрос с данными total=true, то в PHP можно в самом начале сделать такое if(isset($_POST['total'])) { header('Content-type: application/json'); echo '47'; exit; }Вместо 47 надо возвратить настоящее количество |
Круто!!! Работает)) Спасибо за ваше время!!!
|
Malleys, еще один вопрос к вам по этой теме, если можно...
В этом же коде по выборке, у меня есть кнопка на удаление переменных для сортировки, которые находятся в сессии... Перемення total уменя обнавляется при сортировке, но при нажатии на удаление переменных, total не обнавляет значение... Может подскажете как наладить обнавление total при удалении этих переменных...? $("#delete").click(function () { $("#select_like").load("like.php #delete_like "); }); $(".sort a").click(function () { var id = $(this).attr('id'); $.ajax({ url:'/', data:'sort_id='+id, success: function (html) { $("#results").load('fetch_pages.php').hide().fadeIn(500); } }); }); В этом коде я удаляю сессии переменных при нажатии на id='delete', загружаю сообщение об удалении и вывожу обновленную выборку без учета сортировки... |
Zhenyaxxxx, у вас получается, что для обслуживания одной операции требуется запрос к трем страницам, а если к одной?
|
Сидел вчера, экпериментировал, вроде что-то получилось... Но получилось так что код погинации Bootpag я подключаю три раза и получился длиннющий код...Может можно его как то уменьшить...?
$(document).ready(function () { /*------------- первый раз при загрузке страницы------------------- */ $("#results").load("fetch_pages.php"); //начальная страница $("#select_like").load("like.php #fetch_like "); $("#delete").click(function () { $("#select_like").load("like.php #delete_like "); $(".rand-d, .rand-p").prop("selected",true); }); $(".sort-p").change(function () { $(".rand-d").prop("selected",true); }); $(".sort-d").change(function () { $(".rand-p").prop("selected",true); }); $.post("fetch_pages.php", { total: true }, function(total) { /*---------total-----------*/ $(".pagination").bootpag({ total: total, page: 1, maxVisible: 3, leaps: false, next: 'Вперед »', prev: '« Назад' }).on("page", function(e, num){ e.preventDefault(); /* $("#results").prepend('<div class="loading-indication"><img src="../images/loading17.gif" /> Загрузка...</div>'); */ $("#results").load('fetch_pages.php', {'page':num} ).hide().fadeIn(500); $(".sort-d, .sort-p, .sort").change(function () { $(".rand-p").prop("selected",true); }); }); }); /*--------------второй раз при событии, если была сортировка ----------*/ $("#results").load("fetch_pages.php"); //начальная страница $(".sort-d, .sort-p, .sort").change(function () { var id = $(this).val(); $.ajax({ url:'https://ensy.com.ua', data:'sort_id='+id, success: function (html) { $("#results").load('fetch_pages.php').hide().fadeIn(500); $("#select_like").load("block/like.php #fetch_like "); $("#delete").click(function () { $("#select_like").load("like.php #delete_like "); $(".rand").prop("selected",true); }); $.post("fetch_pages.php", { total: true }, function(total) { /*---------total-----------*/ $(".pagination").bootpag({ total: total, page: 1, maxVisible: 3, leaps: false, next: 'Вперед »', prev: '« Назад' }).on("page", function(e, num){ e.preventDefault(); /* $("#results").prepend('<div class="loading-indication"><img src="../images/loading17.gif" /> Загрузка...</div>');*/ $("#results").load('fetch_pages.php', {'page':num} ); }); }); } }); }); /* -------------- и третий раз, если нажата кнопка на удаление сортировки--------------*/*/ $(".sort a").click(function () { var id = $(this).attr('id'); $.ajax({ url:'/', data:'sort_id='+id, success: function (html) { $("#results").load('fetch_pages.php').hide().fadeIn(500); $.post("fetch_pages.php", { total: true }, function(total) { /*---------total-----------*/ $(".pagination").bootpag({ total: total, page: 1, maxVisible: 3, leaps: false, next: 'Вперед »', prev: '« Назад' }).on("page", function(e, num){ e.preventDefault(); /* $("#results").prepend('<div class="loading-indication"><img src="../images/loading17.gif" /> Загрузка...</div>');*/ $("#results").load('fetch_pages.php', {'page':num} ); }); }); } }); }); }); |
Я вот о чем:
пусть перед асинхронным запросом запрос к fetch_pages.php еще логичен, но за ним сразу запрос к like.php, это уже напряг. А вот дальше при асинхронном запросе url:'https://ensy.com.ua', data:'sort_id='+id делать опять запросы по этим адресам, это уже нечто. Серверу ведь по ключу и типу запроса достаточно понять источник, а значит еще на стороне сервера можно просто подключить эти страницы и вернуть их пользователю. |
У меня сейчас мозг взорвется... Я новичек в этом деле и функции с Ajax пока слабо понимаю, делаю методом тыка... Как это на стороне сервера подключить страницы...?
|
Цитата:
С асинхронными запросами тоже самое - пришел запрос на удаление, значит сервер знает, что нужно удалить и вернуть клиенту результат работы N сценариев, которые он подключает. Следовательно в Ajax будет запрос всего по одному url, то есть всего одно подключение. |
Часовой пояс GMT +3, время: 09:12. |