Как настроить получение переменной с другой страницы с помощью 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, время: 03:06. |