Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.01.2019, 16:53
Кандидат Javascript-наук
Отправить личное сообщение для Zhenyaxxxx Посмотреть профиль Найти все сообщения от Zhenyaxxxx
 
Регистрация: 25.10.2018
Сообщений: 102

Как настроить получение переменной с другой страницы с помощью Ajax
Здравствуйте всем на форуме!!!

У меня есть плагин пагинации Bootpag, который размещен на странице index.php. Код выглядит вот так:

$("#results").load("fetch_pages.php"); //начальная страница
	$(".pagination").bootpag({
	  total: <?= $pages; ?>,	   
	   page: 1,		   
	   maxVisible: 3,
	   leaps: false,
	   next: 'Вперед&nbsp;&raquo;',
       prev: '&laquo;&nbsp;Назад'
	}).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, чтоб колличество страниц соответствовало объему выборки...?
Ответить с цитированием
  #2 (permalink)  
Старый 17.01.2019, 17:30
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

$("#results").load("fetch_pages.php");
$.post("fetch_pages.php", { total: true }, function(total) {
	$(".pagination").bootpag({
		total: total,	   
		page: 1,		   
		maxVisible: 3,
		leaps: false,
		next: 'Вперед&nbsp;&raquo;',
		prev: '&laquo;&nbsp;Назад'
	}).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, 17.01.2019 в 17:34.
Ответить с цитированием
  #3 (permalink)  
Старый 17.01.2019, 17:56
Кандидат Javascript-наук
Отправить личное сообщение для Zhenyaxxxx Посмотреть профиль Найти все сообщения от Zhenyaxxxx
 
Регистрация: 25.10.2018
Сообщений: 102

Круто!!! Работает)) Спасибо за ваше время!!!
Ответить с цитированием
  #4 (permalink)  
Старый 17.01.2019, 20:20
Кандидат Javascript-наук
Отправить личное сообщение для Zhenyaxxxx Посмотреть профиль Найти все сообщения от Zhenyaxxxx
 
Регистрация: 25.10.2018
Сообщений: 102

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, 17.01.2019 в 20:23.
Ответить с цитированием
  #5 (permalink)  
Старый 18.01.2019, 11:39
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Zhenyaxxxx, у вас получается, что для обслуживания одной операции требуется запрос к трем страницам, а если к одной?
Ответить с цитированием
  #6 (permalink)  
Старый 18.01.2019, 12:12
Кандидат Javascript-наук
Отправить личное сообщение для Zhenyaxxxx Посмотреть профиль Найти все сообщения от Zhenyaxxxx
 
Регистрация: 25.10.2018
Сообщений: 102

Сидел вчера, экпериментировал, вроде что-то получилось... Но получилось так что код погинации 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: 'Вперед&nbsp;&raquo;',
       prev: '&laquo;&nbsp;Назад'
	}).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: 'Вперед&nbsp;&raquo;',
       prev: '&laquo;&nbsp;Назад'
	}).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: 'Вперед&nbsp;&raquo;',
       prev: '&laquo;&nbsp;Назад'
	}).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} );
	});	
});		
				
				}
		    });		
	});



});
Ответить с цитированием
  #7 (permalink)  
Старый 18.01.2019, 14:02
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Я вот о чем:

пусть перед асинхронным запросом запрос к fetch_pages.php еще логичен, но за ним сразу запрос к like.php, это уже напряг. А вот дальше при асинхронном запросе

url:'https://ensy.com.ua',
data:'sort_id='+id

делать опять запросы по этим адресам, это уже нечто. Серверу ведь по ключу и типу запроса достаточно понять источник, а значит еще на стороне сервера можно просто подключить эти страницы и вернуть их пользователю.

Последний раз редактировалось laimas, 18.01.2019 в 14:11.
Ответить с цитированием
  #8 (permalink)  
Старый 18.01.2019, 17:05
Кандидат Javascript-наук
Отправить личное сообщение для Zhenyaxxxx Посмотреть профиль Найти все сообщения от Zhenyaxxxx
 
Регистрация: 25.10.2018
Сообщений: 102

У меня сейчас мозг взорвется... Я новичек в этом деле и функции с Ajax пока слабо понимаю, делаю методом тыка... Как это на стороне сервера подключить страницы...?
Ответить с цитированием
  #9 (permalink)  
Старый 18.01.2019, 17:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Zhenyaxxxx
функции с Ajax пока слабо понимаю
Ajax тут вообще боком. Дело не в нем, а как отдавать запрошенное клиентом. Если из вашего кода удалить асинхронный обмен с сервером, то это будет означать следующее (если чисто по вашему подходу) - запрос страницы fetch_pages.php, которая что-то сохраняет, затем перенаправление на страницу like.php, которая подцепляет сохраненное и т.д. с несколькими переходами выдаст результат клиенту. А это накладно. Но никто не отменял подключения, то есть в зависимости от запроса сервер подключает другие сценарии и возвращает результат.

С асинхронными запросами тоже самое - пришел запрос на удаление, значит сервер знает, что нужно удалить и вернуть клиенту результат работы N сценариев, которые он подключает. Следовательно в Ajax будет запрос всего по одному url, то есть всего одно подключение.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как с помощью javascript взять данные из одного файла html и закинуть в другой? rusik Общие вопросы Javascript 10 08.08.2016 12:11
Как обработать RadioButton с помощью JavaScript и AJAX MagicDawn AJAX и COMET 6 24.12.2013 20:42
как передать значение переменной в IFRAME в поле формы JS-ом из самой страницы? DeUre Общие вопросы Javascript 14 17.12.2013 16:37
Как реализовать динамический контент на странице с помощью AJAX depudad AJAX и COMET 3 07.11.2013 13:01
Переменная от переменной или как к имени переменной конкатенировать значение другой Aderba jQuery 5 12.11.2008 15:25